让未经身份验证的用户访问FIrebase中的数据库?

时间:2017-09-28 19:14:46

标签: android firebase authentication

设置Firebase数据库安全规则的缺点是什么,未经身份验证的用户也可以访问数据库数据库会以何种方式受到攻击?

2 个答案:

答案 0 :(得分:1)

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

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

我们还可以对您的数据库进行POST PATCH和DELETE请求并清除它!

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/

答案 1 :(得分:1)

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

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

如果你的应用允许一个人的用户数据被另一个用户覆盖,这将是另一个坏事,但这会更多地进入一个设计糟糕的应用程序。而在例如以前的情况下,不能完全避免先前的攻击向量。您在网站上运行电子邮件订阅服务以吸引潜在客户。您需要一些针对DoS攻击的其他安全措施。

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