保护WP7应用程序中的身份验证数据

时间:2012-05-12 21:08:45

标签: windows-phone-7 authentication amazon-web-services

我正在编写一个WP7应用程序,并希望包含使用亚马逊AWS作为存储服务共享高分数据的功能。

据我所知,WP7 XAP文件(目前)已安全加密,并且手机没有已知的越狱文件。但是,鉴于这种“安全”加密可能是暂时的,我想了解这是否/如何违反最佳做法。

AWS'mynamoDB使用可以使用给定帐户数据生成的临时访问令牌,并且有效期为36小时,必须使用带有任何请求的签名来验证令牌。

我正在考虑将所有访问数据存储在XAP文件中,该文件还将生成临时访问令牌和签名。这些信息将通过电话和AWS之间的https请求传递。

我正在尝试制定替代流程,包括将临时令牌计算的生成传递给外部Web服务,但是我想不出一种方法来保护这些数据,如果可以访问XAP文件,这些数据也不会受到类似的损害。

我完全错过了最佳实践方法,还是我过于谨慎?

感谢。

1 个答案:

答案 0 :(得分:1)

您将永远无法阻止用户发送错误分数,这几乎与每个热门游戏都存在非官方作弊应用程序的原因相同。你能做的最好的就是让它变得更强大。

通过简单的方法,客户端将分数直接发送到服务器,无需任何加密。有人可以通过在模拟器上运行应用程序并捕获传出数据包,然后在桌面浏览器上打开相同的URL来作弊。预计时间:不到10分钟,任何知道他可以直接从市场下载XAP,删除清单并将其部署在模拟器上的人都可以完成。

然后,您可以在客户端上添加加密密钥。现在有人必须知道C#和Reflector来提取它,但对于拥有这些技能的人来说仍然很容易。

下一级,您可以添加加密密钥并对程序集进行模糊处理。需要了解CIL和Relector来提取密钥。一个高技能的开发人员需要30分钟到一个小时来提取密钥,而大多数开发人员需要花费数小时。

最后,您可以添加多个步骤来混淆更多入侵者(例如,从服务器下载临时令牌并在分数发送过程中以某种方式使用它)。此外,你可以设计得分系统的方式,一些分数是非法的(愚蠢的例子:如果最小得分行动获得2分,那么如果有人发送一个奇数作为分数,你知道他在作弊。这个很容易计算out,但你可以制定更复杂的规则)。

无论如何,请记住,您的系统总是容易受到攻击,只需要花费多长时间让攻击者突破它。如果高技能的开发人员需要花费数小时或数天的时间,那么除非你向最好的玩家提供一些有价值的奖品,否则你可以放心地认为没有人愿意这样做。