Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NET MVC 3创建安全的高分服务_C#_Asp.net_Asp.net Mvc 3_Windows Phone 7_Encryption - Fatal编程技术网

C# 使用ASP.NET MVC 3创建安全的高分服务

C# 使用ASP.NET MVC 3创建安全的高分服务,c#,asp.net,asp.net-mvc-3,windows-phone-7,encryption,C#,Asp.net,Asp.net Mvc 3,Windows Phone 7,Encryption,我对这个问题做了很多研究,但似乎仍然找不到我想要的。基本上,我已经为WP7创建了一个游戏,我希望它连接到我创建的服务,以发送高分并获得排行榜。现在的服务很简单,只需要一个球员的名字和分数字符串格式 我看过很多关于如何加密和解密数据的教程,但它们似乎都是基于用户信息生成密钥的,通常只是本地示例。难道我不需要使用与在应用程序端加密数据相同的密钥,以便在服务器端解密数据吗?我是否创建自己在应用程序和服务器上使用的密钥?我怎样才能拿到那把钥匙 我一直在使用这种方法向我的服务发送加密字符串: 但我真的很

我对这个问题做了很多研究,但似乎仍然找不到我想要的。基本上,我已经为WP7创建了一个游戏,我希望它连接到我创建的服务,以发送高分并获得排行榜。现在的服务很简单,只需要一个球员的名字和分数字符串格式

我看过很多关于如何加密和解密数据的教程,但它们似乎都是基于用户信息生成密钥的,通常只是本地示例。难道我不需要使用与在应用程序端加密数据相同的密钥,以便在服务器端解密数据吗?我是否创建自己在应用程序和服务器上使用的密钥?我怎样才能拿到那把钥匙

我一直在使用这种方法向我的服务发送加密字符串:

但我真的很困惑如何在应用程序端和服务器端同步这个过程,因为密钥生成


如果有人创建了高分服务,并提供了一些非常有用的提示。

您可以尝试使用客户端证书加密数据。有人试图完成同样的事情,这是一条不错的线索。

如果你想让它真正安全(可能不需要),那么情况就很棘手了——你必须假设玩家可以访问你的应用程序的源代码(因为他/她可以反编译它)还可以访问存储在应用程序中或手机中任何位置的所有钥匙。这意味着,如果您的应用程序使用手机上存储的密钥对分数进行加密,那么攻击者也可以使用假分数进行加密

为了使其真正安全,您可能需要向服务器发送一些游戏日志,服务器必须验证日志是否是完成游戏的合理方式(即,游戏可能以这种方式进行)。要在这个系统中伪造分数,攻击者必须生成游戏日志——这意味着创建一个比人类更好地玩游戏的AI(以获得更好的分数)。这可能仍然是可能的(如果游戏对计算机来说很容易),但我想不太可能有人会打扰

在实践中,我认为您可以对分数的编码方式进行一些模糊处理(例如,在服务器和客户端上使用具有相同密钥的对称加密)。如果有人查看通过网络发送的数据,他们将不容易伪造更好的分数。如果他们对应用程序进行反编译,那么他们可能仍然会这样做,但这可能不太可能(你可以偶尔手动检查分数,看看是否有可疑之处)


[编辑:我不是WP7专家,所以WP7可能提供了一些特殊的功能,但原则上,它仍然会有相同的问题]

我应该明确了解模糊处理,感谢提供的信息。我尽可能地避免手工挑选,但是如果任何恶意玩家找到一种方法来创造自己的分数,那就必须如此。