【问题标题】:Firebase Cofiguration Open - Web AppFirebase 配置打开 - 网络应用
【发布时间】:2017-07-19 05:17:57
【问题描述】:

我正在将 firebase 用于 Web 应用程序,其中包含 Api 密钥和其他凭据的配置已打开。我已经编写了规则来防止写入数据库,但我无法阻止它们注册,我已将一些域列入白名单,但除此之外,在创建用户时也可以访问域。我正在使用 cordova 将此网络应用程序转换为 android 应用程序和 ios 应用程序。有什么办法可以阻止用户注册。

【问题讨论】:

  • 如果您想限制用户数量,您必须手动进行。如果你想防止dos攻击。使用验证码将是一个好方法。
  • 配置文件已打开,如果有人使用此配置文件不必要地添加用户@rv7284

标签: javascript firebase firebase-authentication firebase-security


【解决方案1】:

那么,您希望允许某些用户注册,但不允许其他用户注册?我还假设您想使用 Google 的内置注册系统。

第一种方法

实现这一目标的最快但可能最困难的方法是使用 firebase 函数提前将一组用户列入白名单。 Firebase 函数可以捕获注册请求,如果它与您的白名单地址不匹配,则直接忽略它。

当然,您也可以使用它来执行各种其他功能,例如向它发送允许在短时间内注册的请求。任何可以通过 javascript 实现的东西。

否则您将无法创建自己的登录方法。

我认为这是阻止他们注册的唯一方法。

第二种方法

如果您想允许注册但不允许访问数据库,您应该能够将规则设置为“auth = (uid)”,这将只允许这些 uid 写入。

同样的过程可以通过基于您的 uid 集允许写入等使用 firebase 函数来实现。

另一种方法是通过firebase远程配置条件并达到类似的效果。 (但我不建议这样做,因为它会创建不安全的客户端身份验证,或检查身份验证的不必要步骤。

我使用的类似的东西是允许完全访问数据库,但使用 firebase 函数来防止删除。此方法允许用户拥有完全访问权限,但我可以随时轻松更改他们写入、移动或删除节点的能力。本质上,如果事实证明 firebase 函数方法最适合您的情况,我可以更新我的回复以包含我的代码中的示例。

第三种方法

某些 firebase 用户使用数据库来存储用户及其凭据以及他们的个人资料数据。因此,当用户注册时,它会将一个节点添加到数据库中,通过简单的移动、删除或创建一个指示其权限的密钥,可以轻松地接受或拒绝该节点。

祝你在火力基地上好运。它的功能通常有些隐藏且难以找到。在 youtube 上观看完整的 Google I/O 演示文稿可能会很有用,该演示文稿详细解释了其广泛的曲目。可以找到here。我强烈建议这样做,因为它帮助我更好地理解功能和(说实话)我应该使用 firebase 的所有方式(但不是)。

【讨论】:

  • 感谢您的回复,但我的问题是,如果有人有我的配置文件,他们将能够创建自己的网络钓鱼页面并注册,即使他们没有数据库访问权限,这将被规则阻止,但我想阻止其他域的注册。 @Drei
  • 在认证下,在SIGN-IN METHOD选项卡中,您可以更改授权域。
  • 我也这样做了,但它仍然在其他域发生@Drei
  • 可能是因为可以复制配置,所以文件中包含的auth域也被复制了。除了一些使用 firebase 功能的诡计之外,真的没有办法解决这个问题。然而,我很感兴趣;你能举个例子说明你是如何测试其他域的访问的吗?
  • 从其他域中,我们只能将第三方应用程序的 OAuth 域列入白名单,但对于正常注册,我们不能这样做@Drei
【解决方案2】:

如果您需要对用户注册进行绝对控制,我认为您应该使用custom authentication。这样,用户将不会直接在您的 Firebase 实例上注册,但您将为注册和登录过程提供单独的服务器 API .

当用户登录时(也可以通过您的服务器 API),您可以向她/他发出 custom authentication token,他们可以使用它来验证和访问 Firebase 上的数据。您可以阅读有关自定义身份验证的更多信息here

您可以拥有一个运行注册逻辑的小型 NodeJS 服务器。在那里,您可以禁止不受欢迎的电子邮件。

Here 是关于从您的服务器创建自定义身份验证令牌的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    相关资源
    最近更新 更多