针对匿名身份验证用户的 Firebase/Firestore 安全规则是否安全?

时间:2021-04-12 12:17:23

标签: firebase flutter google-cloud-firestore firebase-authentication firebase-security

我有一个 Flutter 应用程序,它使用 API 来提取数据。我的 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 个答案:

答案 0 :(得分:1)

如果您的应用中有权访问您的 API 密钥的任何用户都足够安全,那么是的,您没问题。就我个人而言,我会将任何需要 API 密钥的逻辑从客户端应用程序迁移到 Firebase 函数中。这样您就可以更严格地控​​制安全性,只允许来自您的应用的请求。

通过匿名身份验证,您当前的规则与项目的当前结构一样好。