保护 Firebase 数据库侦听器免受 Web DOS 攻击和滥用普通凭据



Firebase在手机上非常有意义。 但不是对于网络,每个人都知道

  1. 我使用火力基地
  2. 他们知道数据库网址
  3. 他们
  4. 确实看到了我允许他们阅读的部分的数据库结构
  5. DOS 攻击可以通过打开许多数据库侦听器来发生

例如,我想在新闻提要、书签帖子和帖子草稿上实现侦听器,以便用户可以继续从手机进行编辑。是的,我知道安全规则确实保护数据库,因此没有人可以读取其他用户的数据。但它并不能保护我免受虐待。

有没有另一种方法可以在不牺牲安全性的情况下利用实时同步? 除了使用云功能每分钟或单击一次检查链接。

我遇到了同样的问题,并想出了一个解决方案,至少可以有效地限制Firebase中可公开写入数据的长度。

假设您有一个用于保存用户名称和消息聊天框数据库。

service cloud.firestore {
match /databases/{database}/documents {
match /chatroom/{document=**} {
allow read: if true;
allow  write: if resource.data.message.length <= 260 && resource.data.name.length <= 20;
}
}
}

使用此限制,我至少可以有效地删除试图用请求淹没数据库的请求。 (请注意,这不会限制写入内容的长度,但会放弃尝试( 请参阅:如何在 Firebase 中限制字符串长度

对于仅通过 man 侦听器读取数据的 DOS,我认为这不会构成一个大的向量,因为攻击在网络流量和计算方面与受害者一样昂贵。

基本上,Firebase 的大部分弹性来自设置良好的访问规则。如今,每个更大的应用程序都要求您以某种形式进行身份验证,因此,如果您只需要一些身份验证(例如googleauth(来读取/写入数据库,您可能永远不必担心DOS。

最新更新