jcu*_*bic 2 javascript checksum firebase
如果您在浏览器中使用 Firebase 实时数据库,则需要共享 API 密钥,因此无法保护数据库。我有一个简单的游戏(ASCII Tetris)可以保存游戏的高分,问题是任何人都可以欺骗请求并发送自己的分数。(这是一个人所做的截图):
有什么解决方案可以防止这种情况?我正在考虑对 CSRF 的保护做同样的事情,在那里你创建一个令牌并验证它是否有效,这样只有我的代码才会有适当的 CSRF 像令牌。攻击者仍然可以在调试器中暂停应用程序并检查令牌并发送他自己的令牌,但这需要他知道如何使用调试器,因此破解会有点困难。
firebase 实时数据库有".validate"
规则,您可以验证令牌是否有效(https://firebase.google.com/docs/database/security)。我也在考虑创建类似校验和链的东西(比如在 git 或区块链中)。
你认为有可能创造出这样的东西吗?您知道对于我保存分数的情况,是否有更好的方法来保护 firebase 实时数据库?对于这个简单的游戏,除了像我这样的简单案例之外,答案可能对其他案例有用。
Fra*_*len 14
您可以在 Firebase 的安全规则中实施惊人的复杂性。例如,我曾经看到验证国际象棋移动的规则 - 非常令人印象深刻。
大多数情况下,我建议存储足够的信息来重播发生的事情,以便您可以检查结果是否有效。我的第一个 Firebase 游戏是打字游戏,所以我会存储:
这使我可以重玩游戏以检查是否得到相同的结果。但它也允许我(将来)编写代码来检查按键中的不规则模式。例如,我的机器人过去常常以非常特定的时间间隔按下一个键。当然,恶意用户可以轻松地使其更加智能,但您可以改进作弊检测代码。
此类作弊检测代码当然不应出现在客户端中,因为这会给恶意用户提供您不希望他们拥有的信息。因此,您可以在受信任的环境中运行此代码,例如您的开发机器、您控制的服务器或 Cloud Functions。
所以我的典型步骤:
欢迎来到游戏开发者与恶意玩家的军备竞赛。:)
归档时间: |
|
查看次数: |
256 次 |
最近记录: |