匿名身份验证用户的这个 Firebase/Firestore 安全规则是不是安全?
Posted
技术标签:
【中文标题】匿名身份验证用户的这个 Firebase/Firestore 安全规则是不是安全?【英文标题】:Is this Firebase/Firestore security rule for anonymously authenticated users safe?匿名身份验证用户的这个 Firebase/Firestore 安全规则是否安全? 【发布时间】:2021-07-07 12:35:20 【问题描述】:我有一个使用 API 提取数据的 Flutter 应用。我的 API 密钥是唯一存储在整个 Firestore 数据库中的东西。我的 Flutter 应用从 Firestore 检索 API 密钥,然后使用它来获取数据。
我的应用还启用了匿名身份验证。我的应用程序在启动时会创建一个匿名用户。我的应用不允许用户创建帐户或注册。
以下是我目前拥有的 Firestore 安全规则,我不确定是否可以对其进行改进以使其更安全地免受恶意攻击。我的规则指向一个非常具体的文档myAPIKeyDocument
,只允许授权用户使用get
,不允许写入。
如果我希望我的应用授予的唯一权限是匿名身份验证用户读取我的 API 密钥的权限,这些规则是否安全?而且,if request.auth.uid != null;
真的有什么不同吗,因为我的应用程序的所有用户都将自动进行匿名身份验证?
rules_version = '2';
service cloud.firestore
match /databases/database/documents
match /myDataCollection/myAPIKeyDocument
allow get: if request.auth.uid != null;
allow write: if false;
【问题讨论】:
【参考方案1】:如果您的应用程序中有权访问您的 API 密钥的任何用户都足够安全,那么您就可以了。就我个人而言,我会将任何需要 API 密钥的逻辑从客户端应用程序迁移到 Firebase 函数中。这样您就可以更严格地控制安全性,只允许来自您的应用的请求。
使用匿名身份验证,您当前的规则与您项目的当前结构一样好。
【讨论】:
以上是关于匿名身份验证用户的这个 Firebase/Firestore 安全规则是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
firebase react-native:通过电话身份验证将匿名用户转换为永久用户