首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是阻止人们攻击基于PHP的Flash游戏高分榜的最佳方法

什么是阻止人们攻击基于PHP的Flash游戏高分榜的最佳方法
EN

Stack Overflow用户
提问于 2018-08-28 00:48:01
回答 2查看 0关注 0票数 0

我说的是没有上限分数的动作游戏,无法通过重放动作等来验证服务器上的分数。

我真正需要的是Flash / PHP中可能的最强加密,以及一种阻止人们通过我的Flash文件调用PHP页面的方法。我曾经尝试过一些简单的方法,可以对单个分数进行多次调用并完成校验和/斐波纳契序列等,并且还使用Amayeta SWF加密对SWF进行模糊处理,但最终都被黑客攻击了。

感谢StackOverflow的回复,我现在从Adobe找到了更多信息 - http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_12.htmlhttps://github.com/mikechambers/as3corelib - 我想我可以用于加密。不知道这会让我在CheatEngine附近。

如果它们不同,我需要知道AS2和AS3的最佳解决方案。

主要问题似乎是TamperData和LiveHTTP标题,但我知道还有更高级的黑客工具 - 比如CheatEngine(感谢Mark Webster)

EN

回答 2

Stack Overflow用户

发布于 2018-08-28 08:50:45

你可能会问错误的问题。你似乎专注于人们用来在高分榜上游戏的方法,但阻止特定方法只是到目前为止。我对TamperData没有经验,所以我不能说。

您应该问的问题是:“我如何验证提交的分数是否有效且真实?” 具体方法是依赖游戏。对于非常简单的益智游戏,您可以将分数与特定的起始状态和导致结束状态的移动顺序一起发送,然后使用相同的移动在服务器端重新运行游戏。确认所述分数与计算得分相同,并且只有在匹配时才接受分数。

票数 0
EN

Stack Overflow用户

发布于 2018-08-28 10:42:32

一种简单的方法是提供高分值的加密哈希以及自己的分数。例如,通过HTTP GET发布结果时:http//example.com/highscores.php? score = 500& checksum = 0a16df3dc0301a36a34f9065c3ff8095

在计算此校验和时,应使用共享密钥; 这个秘密永远不应该通过网络传输,但应该在PHP后端和flash前端中进行硬编码。上面的校验和是通过将字符串“ secret ” 预先添加到分数“ 500 ”并通过md5sum运行来创建的。

尽管该系统将阻止用户发布任意分数,但它不会阻止“重放攻击”,其中用户重新发布先前计算的分数和散列组合。在上面的示例中,得分500将始终产生相同的哈希字符串。通过在要散列的字符串中包含更多信息(例如用户名,时间戳或IP地址),可以减轻某些风险。虽然这不会阻止数据的重放,但它将确保一组数据一次只对单个用户有效。

为了防止发生任何重放攻击,必须创建某种类型的质询 - 响应系统,例如:

  1. Flash游戏(“客户端”)执行http://example.com/highscores.php的HTTP GET,没有参数。此页面返回两个值:随机生成的salt值,以及该salt值与共享密钥组合的加密哈希值。此salt值应存储在待处理查询的本地数据库中,并且应该具有与之关联的时间戳,以便它可以在一分钟之后“到期”。
  2. Flash游戏将salt值与共享密钥组合在一起,并计算哈希以验证它是否与服务器提供的哈希相匹配。此步骤对于防止用户篡改salt值是必要的,因为它验证salt值是否实际由服务器生成。
  3. Flash游戏将salt值与共享密钥,高分值以及任何其他相关信息(昵称,ip,时间戳)相结合,并计算哈希值。然后,它通过HTTP GET或POST将此信息以及盐值,高分和其他信息发送回PHP后端。
  4. 服务器以与客户端相同的方式组合接收的信息,并计算散列以验证其是否与客户端提供的散列匹配。然后,它还验证salt值是否仍然有效,如挂起查询列表中所列。如果这两个条件均为真,则将高分写入高分表并将签名的“成功”消息返回给客户端。它还会从挂起的查询列表中删除salt值。

请记住,如果用户可以访问共享密钥,则上述任何技术的安全性都会受到影响

作为替代方案,可以通过强制客户端通过HTTPS与服务器通信以及确保客户端预先配置为仅信任由您自己可以访问的特定证书颁发机构签名的证书来避免这种来回中的一些来回。 。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档