我刚在youtube上看了this视频。据我所知,黑客总是能够进行黑客攻击,但是我正在寻找一种解决方案来提高我的游戏安全性。
我不希望用户能够更改他们的硬币。加密或混淆在这里是一个选项吗?
我正在寻找一种轻量级的解决方案。
请分享你知道或已经做了什么来防止(使它更难)的发生。
发布于 2013-05-30 02:12:59
我用数据加上盐创建了一个MD5散列,并将其存储在数据库中。
示例:
Score: 1234
Lives: 3
Calculate MD5 from: "fsjdhASd8adnsa9asdmasdsd#1234#3#AS88asdDA*ASD8ASdmas"
Store on the database: 1234|3|b7f67f11fed055cce28d6f50fd829e9c
在从数据库读取数据时,我将score和Live值与我知道的盐连接在一起,并检查它是否与存储的md5散列匹配。
示例:
Read score = 1234
Read lives = 3
Concatenate "fsjdhASd8adnsa9asdmasdsd#" + score + "#" + lives + "#AS88asdDA*ASD8ASdmas"
Calculated MD5 = b7f67f11fed055cce28d6f50fd829e9c
Calculate the MD5 from this string and check if it matches with the stored hash
如果分数被更改为9999,我将得到hash 0d64ebead4451f826c15b5d03853f8da,因此它是无效的!
显然,这并不是万无一失的,用户可能会对代码进行反向工程并对其进行更改,但这会使事情变得更加困难!
有些人仍然试图修改它,但随后我向服务器发送了一条消息,将该用户标记为作弊!
发布于 2013-05-30 02:12:03
最可靠的方法是存储服务器端的重要信息,并让客户端与服务器进行交互。由于这些黑客攻击只发生在客户端,当客户端试图购买硬币时,您应该询问服务器是否允许购买。
当然,这可以通过劫持网络响应、伪造服务器等方式进行黑客攻击,如果您没有添加适当的安全措施就不是这样。但至少这种黑客攻击不会有任何效果。
但加密或混淆也应该在某种程度上起作用,因为它不可能搜索到值,然而,如果有人对你的应用进行反向工程,也不难弄清楚这是如何做到的。ProGuard可能会让你更安全一点,但服务器端始终是最安全的方式。
https://stackoverflow.com/questions/16820223
复制相似问题