Firebase实时数据库:什么';登录页的正确安全规则是什么?

Firebase实时数据库:什么';登录页的正确安全规则是什么?,firebase,firebase-authentication,firebase-security,spam-prevention,Firebase,Firebase Authentication,Firebase Security,Spam Prevention,我的登录页面是一个即将到来的页面,它包含了用户的姓名、电子邮件地址等订阅操作。用户无需经过身份验证即可订阅。他可以是任何随机访问此页面的人。我觉得规则应该是“读”:假,“写”:真。但谷歌警告我说,write:true将允许任何人向数据库写入数据,即使是不使用该应用程序的人 我觉得这是很自然的,直到我放了验证码什么的。这些问题是如何解决的(订阅或即将发布的具有表单的页面中的垃圾邮件预防)?您可以做些什么来防止滥用仅使用安全规则(它不会防止所有类型的垃圾邮件,因为您应该进入CAPTCHA和其他解决方

我的登录页面是一个即将到来的页面,它包含了用户的姓名、电子邮件地址等订阅操作。用户无需经过身份验证即可订阅。他可以是任何随机访问此页面的人。我觉得规则应该是“读”:假,“写”:真。但谷歌警告我说,write:true将允许任何人向数据库写入数据,即使是不使用该应用程序的人


我觉得这是很自然的,直到我放了验证码什么的。这些问题是如何解决的(订阅或即将发布的具有表单的页面中的垃圾邮件预防)?

您可以做些什么来防止滥用仅使用安全规则(它不会防止所有类型的垃圾邮件,因为您应该进入CAPTCHA和其他解决方案),您可以在Firebase上设置电子邮件身份验证并请求电子邮件确认。进入身份验证>登录方法>启用电子邮件

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

(0TTUf…是Firebase分配的id)

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

它看起来是这样的:

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

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

那么您的规则如下所示:

{
  "rules": {
    ".read": false,
    ".write": false
  }
}
在您自己管理数据库时,不允许任何用户读取或写入数据库

总结:请求姓名和电子邮件,分配密码,将此数据发送到 Firebase作为新用户登录,将电子邮件和名称保存在 /用户/$user\u id