让未经身份验证的用户访问Firebase中数据库的缺点



设置Firebase数据库的安全规则的弊端是什么,使得未身份验证的用户也可以访问数据库可以通过哪些方式攻击数据库?

默认情况下,所有firebase数据库都可以通过项目的ID访问:

例如:
您可以使用项目ID从任何计算机浏览数据库:'https://[project_id] .firebaseio.com/.json'(获取请求)

我们还可以向您的数据库删除后补丁并删除请求!

curl -X POST -d '{"myData" : "in", "your" : "Database!"}' 
  'https://[PROJECT_ID].firebaseio.com/yourHacked.json'

如果您有安全规则,则如果您在请求中发送auth令牌,此功能仍然可以正常工作。(因此,您添加的每个安全规则变得更安全)。

使用安全规则,您可以确保只有数据所有者可以编辑或读取它:

{
  "rules": {
    "Notes": {
      "$userId": {
        // grant read/write permission to the owner of this note
        // whose uid must exactly match the key ($user_id)
        ".write": "$userId === auth.uid", 
        ".read": "$userId === auth.uid"
      }
    }
  }
}


攻击者可以将您的数据库用作自己的数据库,从而导致您大量流量,数据损坏/采矿,金钱(使用配额)。

有关更多信息,请参见以下参考:
https://firebase.google.com/docs/reference/rest/database/

我想到的第一件事是,用户可以用数据淹没您的数据库或读取直到免费配额用完(如果您只使用免费计划)。我将其称为某种拒绝服务(DOS)攻击。

显然,如果您为此付费并且没有指定任何最大成本限制,那么它可能会昂贵。到目前为止,我还没有支付Firebase的费用,也不知道您是否可以设定成本限制。无论如何,您的服务/应用程序都会关闭。

如果您的应用程序允许另一个用户覆盖自己的用户数据,那将是另一件坏事,但这会更多地进入设计不良的应用程序。而先前的攻击向量无法完全避免。您在网站上运行电子邮件订阅服务以吸引潜在客户。您将需要其他一些安全措施,以防止DOS攻击。

我认为它不会变得更糟:)

最新更新