无需身份验证的Firebase安全规则编写

时间:2020-08-13 14:30:33

标签: firebase firebase-realtime-database firebase-authentication

这个问题与这个问题-How can any user write to my database securely in Firebase without Auth?密切相关,但是我想进一步阐明它,并就我的用例寻求某种解释。很抱歉,如果这是一个简单的问题,但我希望能够进一步了解此安全性。

据我所知,.write在任何情况下似乎都是非常危险的牌,因为如果配置不当,任何人都可以写您的文档并从根本上更改/删除它们-据我所知。 / p>

我希望澄清2个用例,这些用例正在努力解决如何最好地进行管理。

  1. 我正在从网站上收集一些分析数据,因此向Firebase实时数据库进行写操作(例如,对特定按钮的点击次数),无论用户是否登录,都将收集该数据。我想从经过身份验证的用户和未经身份验证的用户收集所有分析数据。但是,我不希望任何随机的Joe写入我的数据库。我该如何为此配置安全规则?

  2. 在进行用户身份验证.write的情况下-这意味着我们实际上仅在经过身份验证的情况下才允许写操作,我了解我们可以使用安全规则仅允许它们写自己的数据(防止使用它们)从写入其他用户的数据)到安全规则,例如:

"users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid",
      }
    }

2(续)。但是,如何允许他们写入特定的共享数据库?同样,在同一示例中,我要收集经过身份验证的用户的分析,也许有多少用户单击了一个按钮。我需要允许所有用户.write(通过交易)访问该文件,但是由于每个人(在这种情况下均经过身份验证)都可以访问该文件,因此该用户是随机用户可能会覆盖/删除整个数据。

我希望首先能够弄清我在做的事情是否有错(我认为它们都是合理的用例),如果没有,那么处理这两种使用的最佳方法是什么?案件。非常感谢。

编辑: 首要的问题也许还在于,为什么Firebase仅允许通过auth而不是一般的其他数据来保护数据。这是否意味着如果完全不对任何数据进行保护,就无法对其进行保护?为什么会这样,我应该自己处理吗?

0 个答案:

没有答案