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

Javascript 如何设置firebase数据库安全规则?,javascript,firebase,firebase-security,Javascript,Firebase,Firebase Security,情况是,我有一个网站,最终用户可以通过填写表格订购,但不需要注册或登录,更具体地说,不可能注册或登录。填写表单时,使用submit按钮,我希望使用函数验证输入,如果输入有效,则将其发送给Firebase。有几个问题: 不可能对用户进行身份验证,我需要将Firebase安全规则设置为“open”,这样每个人都可以向数据库写入和读取数据(但设置为每个人都可以写入,但我只能读取数据,这可能是一个很好的解决方案) 我读了一些关于config变量的内容,但是不可能隐藏它,因此如果有人编写一个简单的js程

情况是,我有一个网站,最终用户可以通过填写表格订购,但不需要注册或登录,更具体地说,不可能注册或登录。填写表单时,使用submit按钮,我希望使用函数验证输入,如果输入有效,则将其发送给Firebase。有几个问题:

  • 不可能对用户进行身份验证,我需要将Firebase安全规则设置为“open”,这样每个人都可以向数据库写入和读取数据(但设置为每个人都可以写入,但我只能读取数据,这可能是一个很好的解决方案)
  • 我读了一些关于config变量的内容,但是不可能隐藏它,因此如果有人编写一个简单的js程序,并将config设置为我的文件中的配置,它就可以对数据库执行任何操作

我在想,这真的是以顺序读取用户输入的最佳解决方案吗?我在想,也许js可以以某种方式将数据发送到我的电子邮件地址,但经过仔细研究,我找不到这种可能性。无论如何,肯定有一种解决Firebase问题的方法。我想要的是设置唯一的可能性可以通过网站写入数据库,并仅通过Firebase控制台读取数据。

如果不验证用户身份,您将无能为力,我想最好的选择是设置写入规则以保护所保存数据的完整性(因此,即使有人可以访问它,他们也必须遵循一个结构):并将读取规则设置为“无人”


另一种方法可能是在后端服务器上安装一个API,确保只有在保存到firebase之前,所有请求都来自您的网站。这样您就不必公开您的firebase配置。

如果您没有对用户进行身份验证,您可以做的不多,我想最好的选择是为protec设置写入规则t保存的数据的完整性(因此,即使有访问权限的人对其进行了写入,他们也必须遵循一个结构):并将读取规则设置为“无人”


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

除了@Alchesmashaed的答案,我建议签出。这会为每个用户提供一个ID,而无需他们指定任何信息。它几乎是一个持久会话ID,代码如下:

firebase.auth().signInAnonymously()

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

除了@Alchesmashaed的答案之外,我建议签出。这为每个用户提供了一个ID,而不需要他们指定任何信息。它几乎是一个持久会话ID,代码非常少:

firebase.auth().signInAnonymously()

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

您可以编写一个云函数,该函数将在form post上调用,该函数将在将数据插入Firebase之前检查和清理数据。由于数据插入将从服务器端完成,因此没有配置ig将出现在客户端。然后在Firebase上设置安全性,这样只有你们才能阅读

你也可以检查这些链接,你可能会在那里找到其他东西

以下是Firebase规则的一些常见用例的链接:


这里是Firebase安全文档的链接:

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

你也可以检查这些链接,你可能会在那里找到其他东西

以下是Firebase规则的一些常见用例的链接:


以下是Firebase安全文档的链接:

这是一个从一开始就很热门的话题[-:关注Stevenson的社交话题,看看有多少关于这个话题的问题。这是一个从一开始就很热门的话题[-:关注Socials上的Stevenson,看看有多少关于这个主题的问题。第一段:公共写入节点确实很常见,验证规则可以防止无效数据(但不能防止泛洪)。第二段在安全性方面没有增加太多内容:因为后端服务器执行相同的写入,所以您所做的只是用您自己的(自制API的URL)替换Firebase配置数据。第一段:公共写入节点确实很常见,验证规则防止无效数据第二段并没有增加太多的安全性:因为后端服务器执行相同的写入,所以您所做的只是用自己的(自制API的URL)替换Firebase配置数据。