在不受信任的环境中保护数据

时间:2015-07-05 17:55:48

标签: c# security asp.net-web-api unity3d

我一直在寻找,但找不到一个可以帮助我的好答案。为了解释这种情况,我正在创建一个拥有多人游戏系统的Unity3D游戏。
为了使播放器数据尽可能安全(因此人们不会轻易作弊),我决定实现连接到SQL Server数据库的Web API 2服务。
我设计Web服务时只有在请求包含特定数据时才处理请求。
我现在遇到的问题是设计一个允许我发送/检索数据的解决方案网络服务。我实现了SHA-512来发送密码,因此数据包嗅探器不会以纯文本形式获取它,我计划实现HTTPS,但Unity类使得它变得非常困难。我想将RijdnaelManaged实现为一种更安全的帐户算法,但在Unity中,代码很容易进行逆向工程。
这个模型是否足够安全,可以阻止脚本小子攻击玩家账号?

1 个答案:

答案 0 :(得分:3)

<强> HTTPS

  

我实施了SHA-512来发送密码,因此数据包嗅探器无法以纯文本形式获取,

对于你的网络服务来说,它没有帮助,它现在使用哈希作为密码,所以任何嗅探它的人仍然会捕获它。

使用https而非http来正确使用。

如果你真的不能:建立一个服务首先发出挑战的系统,然后客户在那里&#34;签署&#34;挑战并发回签名。到目前为止,这仍然不如https好,但它可以防止一些事情(但不是例如中间人攻击)。

安全

如果您考虑分析风险,您需要注意解决您的游戏用户以及第三方。

第三方,有良好的密码(祝你好运)或适当的2因素身份验证,https等你可以很好地覆盖基础。在webservices中添加一些安全性,你应该是一条很好的方法。

但你还必须与游戏用户打交道。这比看起来更难,因为他们可以在调试器中运行你的游戏并弄清楚游戏如何与服务器通信以及它发送什么,效果是什么等等。如果你有一个多 - 游戏游戏通常涉及可以获得和/或交易的虚拟商品和/或货币。狡猾的玩家会试图让它变得简单,所以你也需要以某种方式保护它 最简单的方法是将游戏逻辑移动到服务器中并仅使用客户端来实现可视化 - 但这显然意味着您可以更多地使用服务器资源...... 信任您的客户正在运行,未经修改,您正在与之交谈:您无法......