【发布时间】:2020-02-03 11:47:12
【问题描述】:
我正在开发一个乘数棋盘游戏(非常类似于国际象棋)。我使用 Firestore 作为后端。我知道为了防止游戏作弊,我需要将游戏逻辑(验证合法移动、更改回合、倒计时)放在服务器端而不是客户端。现在,据我了解,在 Firebase 中配置服务器端行为主要有两个地方:云函数和安全规则。我考虑过使用安全规则来验证移动和云功能来翻转转弯和倒计时。我对安全规则没有太多经验,但我认为编写规则来验证移动会太复杂。或者,我考虑阻止客户端对 Firestore 的所有写访问,并编写 HTTPS 云函数供客户端调用。例如,我将有一个移动功能。客户端将调用此函数,而不是直接写入 Firestore。我不知道该怎么做。你怎么看?
【问题讨论】:
-
这个说法不准确为了防止游戏作弊,我需要把游戏逻辑放在服务器端,不知道这些信息是从哪里来的。如果这是真的,那么任何数据都可能受到损害。规则控制对存储在 Firebase 中的应用数据的读/写访问 - 它们可能不是验证移动的正确位置,因为(通常)会涉及到应用处理的逻辑。例如防止主教在棋盘上垂直移动;您可能可以在规则中实现这一点,但最好通过代码级计算来处理
-
任何有足够经验的人都可以模仿你的客户。这不是 Firebase 的问题。这是软件的本质。任何可访问的软件都可以通过足够的时间和精力进行逆向工程。
-
你可能会发现这个答案很有帮助stackoverflow.com/a/40564807/4330274
-
是的 - 完美的答案并直接与我所说的内容对话仅访问他们获得授权的数据。。很好的答案,可以非常准确地解决您的问题。查看后续问题和答案How do I prevent un-authorized access to my Firebase Database?
-
好的,你同意我们必须把游戏逻辑放在服务器端而不是客户端吗?
标签: firebase google-cloud-firestore google-cloud-functions firebase-security