如何设置Firebase数据库安全规则?

时间:2018-10-12 10:39:28

标签: javascript firebase firebase-security-rules

这种情况是,我有一个网站,最终用户可以在其中填写表格进行订购,但是更具体地说,不需要注册或登录。无法注册或登录。表单已填写,带有“提交”按钮,我想使用功能来验证输入,如果有效,请将其发送到Firebase。有几个问题:

  • 无法对用户进行身份验证,我需要将Firebase安全规则设置为“开放”,以便每个人都可以向数据库写入和读取数据(但是设置为每个人都可以写入的一种很好的解决方案,但是我可以读取数据。
  • 我了解了一些有关config变量的信息,并且没有很好的隐藏它的可能,因此,如果有人编写一个简单的js程序,并将config设置为我的文件中的内容,它就可以对数据库进行任何操作< / li>

我想到这确实是按顺序读取用户输入的最佳解决方案,当时我想到js可以以某种方式将数据发送给我的电子邮件地址,但是经过仔细研究,我可以t发现了这种可能性。无论如何,可以肯定有解决Firebase问题的方法。我要设置的唯一可能性是通过网站写入数据库,然后仅通过Firebase控制台读取数据。

3 个答案:

答案 0 :(得分:1)

如果不对用户进行身份验证,您将无能为力,我猜最好的选择是设置写规则以保护所保存数据的完整性(因此,即使具有访问权限的人向其写了密码,必须遵循一种结构):https://firebase.google.com/docs/database/security/securing-data并将读取规则设置为无人。

另一种方法可能是在后端服务器上具有API,以确保仅在将所有请求保存到Firebase之前才来自您的网站。这样,您就不必公开Firebase配置。

答案 1 :(得分:1)

除了@AlchemistShahed的答案外,我建议您检出Firebase's anonymous authentication。这为每个用户提供了一个ID,而无需他们指定任何信息。它几乎是一个持久的会话ID,其代码如下:

firebase.auth().signInAnonymously()

通过将此(匿名)用户的UID嵌入他们写入数据库的数据中,您可以轻松地检测到何时有单个用户向队列中填充数据。

答案 2 :(得分:0)

您可以编写一个将在表单发布中调用的云函数,该函数将在将数据插入Firebase之前检查和清理数据。由于数据插入将从服务器端完成,因此客户端不存在任何配置。然后在Firebase上设置安全性,以便只有您可以阅读。

您还可以检查那些链接,您可能还会在其中找到其他内容。

以下是Firebase规则的一些常见用例的链接: https://gist.github.com/codediodeio/6dbce1305b9556c2136492522e2100f6

以下是Firebase安全文档的链接:https://firebase.google.com/docs/database/security/