隐藏POST/GET请求 - Flash和PHP

tft*_*ftd 3 php security flash

我正在和朋友一起玩flash游戏.当玩家完成游戏时,他希望将分数插入数据库中.他正在使用本教程的flash - http://www.tizag.com/flashTutorial/flashforms.php.他制作的瑞士法郎很有效 - 它发布了数据.问题是我可以看到来自firebug的请求.这开启了另一个问题 - 任何更高级的用户都可以在不玩游戏的情况下插入自己的分数......

那么有没有办法隐藏Flash游戏的请求?这个问题的正确方法是什么?

Los*_*ode 5

不,没有办法真正隐藏所提出的请求.这是不可能的,如果在Web浏览器中运行,不仅firebug或Live HTTP Headers可以拦截它,我可以加载Wireshark并查找所有传入和传出流量并进行分析.您需要的是加密或复制的方法.例如,取他们的分数,base64_encode()它,然后取当前时间,反转它(并可能在它的末尾添加一个键),然后取MD5.将所有三条信息提交给服务器,如果时间超过5秒,他们可能已经编辑了请求并发送了错误信息.通过反转来检查时间的有效性(如果你使用的话,然后将密钥添加到它中)并获取MD5并确保它们匹配.当然,你可以运行一些复杂的加密算法,但最终是毫无意义的:

没有万无一失的方法可以解决这个问题.我曾经在逆向工程领域工作.我可以告诉你,我可以在任何Flash游戏中编辑任何值.因此,虽然提交分数可能有点安全,但我可以反编译你的游戏并查看代码,看看你做了什么来改变分数提交.或者,更简单的是,我只需编辑保持得分的值可能不到60秒.Adobe Flash Player将变量存储在内存中,这就是弱点所在,我可以轻松地在内存中编辑这些变量和值.

如果你正在努力接受防止逆向工程的挑战,我说你只是停止了嘲笑,希望没有像我这样的人在玩你的游戏.为防止逆向工程已经做了很多尝试,让我这样说:复制和"安全"只会让诚实的人离开.这对现实世界和编程都是如此.真正想要利用系统并具备相关技能的人很容易.它只会让随意的黑客和骗子免于作弊.安全与规避风险的方法之间的平衡始终接近平衡.