我们有一个使用 Firestore 的 iOS 应用程序。该应用程序仅读取数据(不写入),我们没有用户帐户,数据库上的任何内容都必须受到保护。因此,我们遵循这些幼稚的安全规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
}
}
}
然而,Firebase 警告我们(当然,有充分的理由),这使我们面临风险,原因有二:
-
任何用户都可以从数据库中读取任何内容,因此没有什么是安全的。
我不认为这是一个问题,因为我们没有什么必须保密的。至少现在,当然,这可能会改变。
- 允许无限读取
这就是问题所在。我想恶意用户可以读取我们的数据库数百万次,从而关闭我们或只是迫使我们支付大笔账单(我们使用 Blaze 计划,按需付费)。
我们怎样才能避免这种情况的发生呢?我在这里看到了类似的问题,但他们没有提供任何有用的建议,如何限制从 Firebase 读取数据的速率?
我的想法是,我们可以在应用程序中使用匿名用户帐户,然后在我们的安全规则中仅允许在用户“登录”时读取(从而任何使用该应用程序的人)。我远不是 Firebase 和安全问题方面的专家,但这是否至少会让某人更难或不可能读取我们的数据库数百万次,因为它必须通过应用程序完成?
我们如何解决这个问题还有其他建议吗?
![Firebase warning message for bad security rules](https://i.stack.imgur.com/Q19Fz.png)
一旦您允许对文档进行读取访问,就没有真正的方法可以限制特定客户端应用程序的读取速率。有了完全公开的阅读规则,互联网上的每个人都可以重复阅读文档来生成账单。不过,发生这种情况的可能性确实很小,您应该向以下人员报告看似虐待的行为:Firebase 支持.
您可以通过调用您希望客户端能够读取的各个顶级集合来消除警告消息。由于 Firebase 不知道您可能想要允许或禁止访问哪些集合,因此您应该明确说明。例如,每个集合都是这样的:
match /collection1/{document=**} {
allow read;
}
match /collection2/{document=**} {
allow read;
}
如果您这样做,请务必删除您现在拥有的允许访问所有文档的规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)