匿名身份验证用户的这个 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:通过电话身份验证将匿名用户转换为永久用户

匿名用户和经过身份验证的用户使用相同的端点

IIS 混合匿名和 Windows 身份验证

如何配置 ActiveMQ 以将“匿名”用户和角色分配给未经身份验证的用户

IIS 身份验证

Rest Web 服务:具有令牌安全性的匿名和经过身份验证的用户