【问题标题】:Firebase Realtime Database: What's the right security rule for a landing page?Firebase 实时数据库:登陆页面的正确安全规则是什么?
【发布时间】:2017-05-09 10:45:52
【问题描述】:

我的登录页面是一个即将推出的页面,其中包含用户的姓名、电子邮件地址等订阅号召性用语。用户无需经过身份验证即可订阅。他可以是任何随机访问此页面的人。我觉得规则应该是“.read”:false,“.write”:true。但谷歌警告我说 write:true 将允许任何人写入数据库,即使是不使用该应用程序的人。

我觉得这很自然,直到我输入验证码或其他东西。如何解决此类问题(订阅中的垃圾邮件预防或即将推出的带有表单的页面)?

【问题讨论】:

    标签: firebase firebase-authentication firebase-security spam-prevention


    【解决方案1】:

    仅使用安全规则可以防止滥用(它不会阻止各种垃圾邮件,因为您应该使用验证码和其他解决方案),您可以在 Firebase 上设置电子邮件身份验证并请求电子邮件确认。转到身份验证 > 登录方法 > 启用电子邮件。

    当您在数据库中保存用户电子邮件和用户名时,您可以在数据库中创建一个“用户”节点并将其保存在 Firebase 分配给该用户的用户 ID 下。

    (0TTUf...是Firebase分配的id)

    Firebase 将要求输入密码,因为您不需要订阅用户,您只需要保留他们的电子邮件和密码,只需为所有用户分配一个模拟密码即可。

    看起来像这样:

    由于您只是为自己捕获电子邮件和姓名,并且不需要对用户进行身份验证,因此我不明白您为什么要授予用户写入或读取权限。只需在程序中执行逻辑即可保存此数据。

    那么您的规则将如下所示:

    {
      "rules": {
        ".read": false,
        ".write": false
      }
    }
    

    在您自己管理数据库时,不允许任何用户读取或写入您的数据库。

    总结:请求姓名和电子邮件,分配密码,将此数据发送到 Firebase 以新用户身份登录,将电子邮件和姓名保存在 /users/$user_id

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 2020-12-28
      • 2021-10-26
      • 2021-12-05
      • 2021-07-28
      • 2021-02-13
      • 2018-08-27
      • 2021-02-11
      相关资源
      最近更新 更多