设置Firebase
数据库安全规则的缺点是什么,未经身份验证的用户也可以访问数据库? 数据库会以何种方式受到攻击?
答案 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攻击的其他安全措施。
我认为它不会变得更糟:)