正确设置Firebase DB安全性的方法



好吧,我有以下firebase的用例:

客户希望我们从表单中存储数据并将其放入数据库中。这是通过Express的后端在后端处理的。

这必须很快完成,所以我只想确保我做得正确。

我目前有规则允许读取和写入访问是正确的。鉴于用户只能通过表格输入数据,这在生产中可以吗?而且他们将无法访问API密钥,因此其他用户不会弄乱数据?

从您的描述中听起来好像您有:

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

这意味着可以找到数据库的URL(https://yours.firebaseio.com)的任何人都可以写入数据库。他们是否使用您的表格,直接使用firebase SDK,或者只是使用卷曲:

提出休息请求。
curl -X DELETE 'https://yours.firebaseio.com/.json'

这最后一行将删除您的整个数据库。所需要的只是一个恶意用户或一个错别字时(这比您想象的要多得多)。

因此,您确实应该将数据库安全规则设置为:

  1. 验证数据是否正确格式
  2. 确保只有身份验证的用户才能访问其授权的数据

是的,将读取和写入权限设置为true是一个大漏洞,原因有多种:

  • 公共read访问如果您处理任何个人信息,请为用户创建隐私问题。
  • 如果您未经同意将其业务数据暴露给公众,这也是对客户的机密性。
  • 公共write访问允许使用您的数据库URL的任何人随意删除或修改其内容。

还要注意,如果您的应用程序通过其前端将Firebase曝光给用户,那么获取数据库URL就像通过应用程序的HTML源阅读一样简单。

您可以做什么,但是

正在通过服务器端对您的应用进行身份验证,并设置对数据库的私人访问。查看如何创建一个服务帐户,此处也详细介绍。

如果使用较旧版本的firebase,则必须使用服务器令牌

希望这会有所帮助!

相关内容

最新更新