gpt4 book ai didi

facebook - 设计一个安全的 "Low Cost"客户端游戏结果确认方法的思路

转载 作者:行者123 更新时间:2023-12-04 05:18:43 26 4
gpt4 key购买 nike

这更像是一个系统设计问题/挑战,而不是编码问题。

基本上,我正在考虑拼凑一个 Bejeweled仅使用 HTML、CSS 和 javascript 的 Facebook 风格游戏。这主要是出于通过一个重要项目学习 FBJS 的所有小注意事项的愿望。

所以这是交易。为 Facebook 开发时,实际的 API 调用非常昂贵;不仅有一个额外的 POST 到 Facebook 服务器,还有 api 调用限制和节流需要担心。简而言之,对 Facebook 的调用越少越好。将这一点与即使是这个简单的益智游戏的时间问题相结合,也有充分的理由积极减少一般回调的数量。

不是安全专家,这是我想出的设计:

  1. 在游戏页面中嵌入一个随机种子。
  2. 使用该种子创建游戏板(以及根据需要添加的其他部分)。
  3. 在每个玩家移动后,根据自上次移动以来的时间调整种子(异或、连接和散列,类似的东西)。编辑:我可能还应该包括在突变种子时采取的实际行动。
  4. 游戏完成后回传以下内容:游戏开始时间、每步走的时间和时间,以及客户端结果。
  5. 在服务器上,使用给定的数据重新运行游戏,全面检查开始时间和移动时间,然后确认结果匹配。
  6. 为了减少拒绝服务,游戏本身将被调整为在 X 回合获胜。
  7. 为了阻止服务器被用作某种“神谕”,发回无效游戏的用户将被禁止一段时间 X(X 大约是分钟)。

此设计要求每次玩游戏调用 3 个 Facebook:一个用于在游戏开始前存储随机种子,一个用于在游戏结束后获取它,另一个用于在游戏有效时更新玩家的分数。

我试图证明系统的作用是直接得分欺骗(http://...?myscore=999999999 或类似的)。我还想减轻“前瞻”攻击,在这种攻击中,用户可以知道接下来要进入棋盘的是什么棋子。还应防止对托管服务器的拒绝服务攻击(有意或无意)。

真正的问题,有人能看出这个设计的缺陷吗?同样,是否有更简单的设计符合我的标准?

注意:我知道这可能是多么不必要,但这仍然是一个有趣的问题。


我将尝试在这里抛出一些数字来进一步说明我的推理,这些非常粗略,但我希望对您有所帮助。

假设一个 10x10 的游戏板,有大约 200 种可能的移动(交换两个相邻的棋子),其中大部分是无效的。假设每个“回合”平均有 5 次有效移动。如果我们将玩家 Action 限制在 50 到 30,000 毫秒的帧内,则如果“调整”算法不丢弃位,则有 149,750 个潜在的新哈希值;我有信心说至少有 10,000 个潜在的新哈希必须由攻击者计算,假设使用了加密安全哈希。如果你对此使用最小-最大算法,你的决策树会很快爆炸。在此抛出一个游戏 session 到期时间,比如 30 分钟,我相信这种攻击的复杂性相当于编写一个小机器人程序来为你玩,这是无法合理防御的。

最佳答案

如果客户端代码计算下一 block ,而你不能很好地 Conceal 这个算法,那么一些无聊的大学生就会想出来。结果,他们将能够产生巨大的分数并打败您的意图。

关于facebook - 设计一个安全的 "Low Cost"客户端游戏结果确认方法的思路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com