【问题标题】:Security to prevent hacks in a game with node server使用节点服务器防止游戏中被黑客入侵的安全性
【发布时间】:2015-01-16 20:08:15
【问题描述】:

我正在制作一款浏览器纸牌游戏。每个玩家都有从大量可用卡片中购买的一些卡片。

我需要确保玩家不能从浏览器中破解他使用的卡片,因此服务器必须验证他拥有他使用的每张卡片,并且确实是同一张卡片。

为了使应用程序更快,我想将卡片数据存储在外部 JSON 文件中,并且只说“玩家 x 拥有卡片 y 和 z”并从 JSON 中获取这些卡片的信息。

这里有什么安全模式可以帮助我吗?

【问题讨论】:

  • 您需要以某种方式在服务器端跟踪状态。您可以使用 HMAC 在 JSON 中存储一组卡片,然后对其进行签名,并在每个操作上添加时间戳,然后在服务器端对其进行验证。在这种情况下,您需要检查时间戳服务器端以确保未使用先前的牌组(重放攻击)。

标签: node.js security authentication online-game


【解决方案1】:

您可以将openPGP 用于节点以创建两组密钥: 一个公众 - 为您的客户 和一个专用于服务器。

使用每个客户端的公钥 - 您将能够加密代表每个玩家状态的 JSON,并防止通过黑客方式对其进行规避。

确保您阅读了dependancy 部分,以便为旧版浏览器正确填充您的游戏。

【讨论】:

  • 我不确定加密是否能解决问题:玩家移动后,我会收集游戏状态。如果国家被操纵了怎么办?例如,他拿了一张卡,将其所有属性与他拥有的卡的属性进行了切换,但不在棋盘上?还是将卡片移动到非法位置?
  • 我想为卡片设置唯一 ID,但我不确定它是否能解决所有问题。
  • 每次状态更新都需要通过服务器才能预beng yiu 提到的内容。您可以使用加密的随机 ID 来传递更新并从服务器返回“ok”。
  • 是的,但是服务器不知道提前会收到什么,因为这取决于玩家的动作。它可以检查更改是否在规则的可能范围内,但对于单个用户而言,它可能会计算过多。所以我正在寻找某种标记,上面写着“如果你从客户那里收到这个,一切都是合法的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多