移动设备上的Firebase安全

移动设备上的Firebase安全,firebase,unity3d,firebase-security,Firebase,Unity3d,Firebase Security,我正在考虑将Firebase用于我们用Unity3D开发的手机游戏。我担心的是,与web应用相反,代码将位于客户端 是什么阻止了恶意用户向Firebase拨打大量电话,破坏了我们的帐户限制,甚至提高了我们的账单 我知道运行自己的服务器在很多方面都更好,但目前我既没有资源也没有知识自己运行它。我也喜欢Firebase的功能,相信谷歌以某种我不知道的方式解决了这个问题 与大多数需要API密钥的API(如Google map)一样,您不应该让用户能够直接与他们通信 您需要有自己的服务器,并让每个用户创

我正在考虑将Firebase用于我们用Unity3D开发的手机游戏。我担心的是,与web应用相反,代码将位于客户端

是什么阻止了恶意用户向Firebase拨打大量电话,破坏了我们的帐户限制,甚至提高了我们的账单


我知道运行自己的服务器在很多方面都更好,但目前我既没有资源也没有知识自己运行它。我也喜欢Firebase的功能,相信谷歌以某种我不知道的方式解决了这个问题

与大多数需要API密钥的API(如Google map)一样,您不应该让用户能够直接与他们通信

您需要有自己的服务器,并让每个用户创建用户名和密码。用户必须登录到您的服务器才能使用需要付款的Firebase功能。当他们登录到您的服务器时,您的服务器负责发出请求并将请求结果发送回Unity应用程序。Unity app向您的服务器发出请求,您的服务器检查此帐户是否已达到限制,然后决定发出实际请求并返回结果

通过服务器发出请求,您将能够对每个帐户实施限制。通过这样做,您还可以对IP地址进行限制,并确保在达到限制时,不会从同一IP创建或使用新帐户来规避服务器限制

编辑:

上面的答案仍然适用于许多其他需要API密钥的API。幸运的是,Firebase有一个名为Firebase安全规则的功能,这在您的情况下可能很有用。您可以使用Firebase安全规则创建速率限制规则,即每次有请求时,您都可以检查时间戳,然后使用请求的当前时间更新数据库。有了它,您可以实现每分钟1个请求


有一个简单的例子。还有一个更复杂、更完整的例子。

使用Firebase不需要运行服务器,这难道不是重点吗?那么Unity3D的Firebase SDK使用不安全吗?感谢您的回答。是的,但它有许多功能,如分析、crashlytics、存储等,您和您的程序员必须编写这些功能,这些功能需要数月的时间来完成和测试。我的回答中的内容只要求您在服务器上进行身份验证,然后才能使用所有这些FB功能。就这样。我的意思是,你可以尝试通过FB内置身份验证或在设备本身上实现这一点,但如果有人想打很多电话,那么可以很容易地做到这一点,因为代码在他们的设备上运行。因此,如果我理解正确的话,Firebase SDK for Unity3D不能阻止恶意用户打不必要的电话给Firebase?如果是这样的话,那么对于没有意识到这一点的移动开发人员来说,这是非常不安全的…请参阅我的编辑。我认为如果我的回答中没有这两个信息,你就没有更多的办法了。我也认为谷歌可以很容易地实现这一点,让你在他们的服务器上配置,但我认为他们不会,当然,你应该知道为什么。谢谢你的详细解释!我认为许多没有经验的开发人员在使用SDK时没有考虑其局限性,只是相信谷歌。