我有2个flash游戏(用as3写的)。两个高分值都被黑了。每个游戏分数的正常范围不超过5000分(普通用户,只能得到2000 - 3000分)。我目前的反黑客方法是:
在完成游戏后,flash将使用post参数send: username=mike&score=2000&hash=md5(secret。用户名。得分)。在php页面中,我做了检查,如果散列!= md5(秘密。用户名。分数),它将返回错误,并且不会向数据库中插入数据。
我相信这个方法是不够的,否则我的flash游戏就不会被黑了。我可以做些什么来提高我的flash游戏的安全性/防黑客攻击?
黑客是如何破解的?使用第三方软件,如作弊引擎,篡改数据(火狐扩展),tamperIE等??
你能列出所有的标准黑客方法吗?(通过了解黑客的方法/问题,means已经解决了50%的问题,至少我知道问题在哪里,并对此做了一定的预警)
我的标题是" 49700“,因为两个游戏的最高分都是49700(不同的用户认为,实际上有很多这样的分值被插入到我的数据库中),所以我相信他们使用的是相同的方法。
谢谢
发布于 2009-11-03 18:03:25
如果分数验证完全在客户端运行,那么就不可能保证分数验证的安全。您必须至少在服务器端执行部分操作,才能保证远程安全。我认为有两种方法可以做到:
发布于 2009-11-04 02:24:07
到目前为止,最简单的方法,也是最难在闪存中击败的是使用CheatEngine简单地搜索存储分数的内存位置,然后将值更改为您想要的任何值。世界上所有的服务器提交散列/加盐/验证都不会解决这个问题,因为你的游戏在打包成一个漂亮的有效的散列提交之前就认为它是有效的。
如果分数总是在预定义的值之内,你可以对它们进行“理智检查”,但即使是这样,决心坚定的黑客也可以简单地找出最大允许值,并始终提交该值。
您可以尝试在内存中混淆您的分数值,以使CheatEngine更难找到它们,例如,将它们存储为乘法后的值,然后在您的分数值的getter和setter中,包括分数值的乘法/除法,以便为视图和分数提交小部件获取/设置正确的分数。不过,这也只是一种拖延战术。
除非假分数让你花钱,否则不要担心在作弊的人的.01%上浪费时间,或者只是手动调整你的分数表。
防止作弊的关键是:“这到底有多重要?”如果你正在运行某种基于现金奖励的高分竞赛,那么这是一个相当高的优先级。如果你只是因为一些随机的人弄乱了你的高分表而感到恼火,那就不值得你花时间去阻止他们,只要每周检查一次,然后去掉那些不好的分数。
发布于 2009-11-03 17:33:10
你最终是在试图延迟人们入侵你的系统所需的时间,或者使之不值得他们花时间。您可以尝试将盐添加到散列中,以增加一些额外的复杂性。这可以作为值发送到flash游戏(将其作为参数添加到HTML中的flash对象),并将其包括在散列验证码中。您可以发送某种类型的会话id或随机数,因此它总是不同的。您甚至可以通过不同的方法生成两个散列,并对它们进行检查。
当然,不要否认人们已经找到了一种方法来破解实际的游戏功能。或者他们真的是很棒的球员。
https://stackoverflow.com/questions/1666213
复制相似问题