繁体   English   中英

Firebase 数据库 ServerValue 增量 function 在客户端安全吗?

[英]Is Firebase Database ServerValue Increment function safe in client-side?

我正在创建一个简单的点击游戏,每次按下时应该向实时数据库键添加一个数字。 我最近遇到了increment(delta: n) function。但是在客户端 javascript 中运行它会使它容易受到攻击。 还是我错了? 这是否意味着玩家可以编辑他们的程序并更改增量增量?

我想我应该使用https.onCall()在 Cloud Firestore 上运行一个后端程序,通过调用 http 请求来执行增量,但我意识到它很慢。

执行增量/事务操作以避免用户调整程序的最佳方法是什么?

您编码到客户端应用程序中的任何数据库访问都可能被恶意开发人员规避。 虽然像Firebase App Check这样的工具可以很好地阻止此类滥用,但这并不能保证 - 一个有足够动机的恶意用户会找到解决它的方法。

因此,您需要做的是在服务器上强制执行操作,您可以保证 API 调用正在执行您实际想要的操作。 将代码放在 Cloud Functions 中确实是实现这一目标的一种方法,但另一种选择是为您的数据库实施安全规则 每当您的客户端代码尝试访问数据库时,Firebase 就会在其服务器上自动执行这些操作,因此恶意用户无法绕过这些安全规则。

例如,如果你想确保写入总是将调用递增一个,那将是这样的:

".write": "newData.val() = data.val() + 1"

您可以在这些安全规则中做更多的事情,我建议您将它们与您的客户端应用程序代码一起开发。 查看文档和嵌入式视频以了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM