【问题标题】:Firebase security on mobile devices [closed]移动设备上的 Firebase 安全 [关闭]
【发布时间】:2018-07-12 09:58:11
【问题描述】:

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

是什么阻止了恶意用户向 Firebase 发起大量调用并破坏我们的帐户限制或更糟地增加我们的账单?

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

【问题讨论】:

    标签: firebase unity3d firebase-security


    【解决方案1】:

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

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

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


    编辑

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

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

    【讨论】:

    • 使用 Firebase 的重点不就是不需要运行服务器吗?那么用于 Unity3D 的 Firebase SDK 使用起来不安全吗?谢谢你的回答。
    • 是的,但它具有许多功能,例如分析、崩溃分析、存储等,您和您的程序员必须编写这些功能,这需要几个月的时间来完成和测试。 我的回答只要求您在服务器上进行身份验证,然后才能使用所有这些 FB 功能。而已。我的意思是,您可以尝试使用 FB 内置身份验证或设备本身来执行此操作,但是想要进行大量调用的人可以轻松做到这一点,因为代码正在他们的设备上运行
    • 所以如果我理解正确的话,Unity3D 的 Firebase SDK 并没有阻止恶意用户对 Firebase 进行不必要的调用?如果是这样,那么对于不知道这一点的移动开发人员来说,这是非常不安全的......
    • 查看我的编辑。如果没有我的回答中的这两个信息,我认为您无能为力。我也确实认为 Google 可以轻松实现这一点并让您在他们的服务器上进行配置,但我认为他们不会,当然,您应该知道原因。
    • 感谢您的详细解释!我认为许多没有经验的开发人员在使用 SDK 时没有考虑限制,只是信任 Google。
    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    相关资源
    最近更新 更多