Android 应用的 Firestore 安全设置应该是啥? [关闭]

Posted

技术标签:

【中文标题】Android 应用的 Firestore 安全设置应该是啥? [关闭]【英文标题】:What should be the Firestore security settings for Android app? [closed]Android 应用的 Firestore 安全设置应该是什么? [关闭] 【发布时间】:2021-10-17 05:08:14 【问题描述】:

我刚刚在Kotlin 中使用FIrestore 作为数据库创建了我的第一个android 应用程序,并且我也使用了电话身份验证。创建数据库时,我使用了测试模式,现在我想将我的应用程序上传到 Google Play,以便公众可以开始使用我的应用程序。我应该考虑更改的 Firestore 的安全设置是什么?请对此提出一些建议。

目前,这是“规则”选项卡下的内容。

    rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write: if
          request.time < timestamp.date(2021, 8, 29);
    
  

【问题讨论】:

这取决于您希望规则如何。如果您可以分享您的收藏的屏幕截图并说明谁可以访问这些收藏和文档,那么有人能够帮助您的可能性就更高。 只有某个集合不应被所有用户访问(例如,集合 A、B 和 C)。某些用户可以使用某些集合(集合 Y 和 Z)。但是,我们如何定义呢?使用电话验证登录的每个人都可以访问某些集合(集合 P 和 Q)。未登录的用户不应拥有任何访问权限。 如果你能定义谁是那些“某些用户”,我会更容易解释。 安全规则是应用程序逻辑的一部分。问“我的安全规则应该是什么?”本质上与询问“我的代码应该是什么?这完全取决于您的应用程序是关于什么的。我建议从firebase.google.com/docs/rules/get-started 开始,并在您陷入更具体的位置后回复更具体的问题。跨度> @Dharmaraj 当然,我会这样做。我的项目和 Firestore 存在一些严重问题。当我更改 Firebase 帐户时。这就是为什么我不能尝试这个。但是,我确实记得这一点,我会在执行此规则后立即回复并接受答案,我一定会这样做。抱歉耽搁了。 【参考方案1】:

根据我从 cmets 中的示例了解,您有 7 个集合(示例)A、B、C、P、Q、Y 和 Z。

Collection Can be accessed by
A, B, C Certain users
P, Q Users authenticated by Phone auth
Y, Z Certain users
rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
    match /A/docId 
      allow read, write: if isCertainUser();
    
    // Same rule for B and C

    match /P/docId 
      allow read, write: if request.auth != null && request.auth.token.firebase.sign_in_provider == "phone";
    
    // Same rule for Q
    // Checks if user is logged in by Phone auth

    match /Y/docId 
      allow read, write: if isCertainUser();
    
    // Same rule for Z
  

您必须编写一个函数isCertainUser 才能使规则生效。现在,您可以通过多种方式指定具有访问权限的用户。例如,您可以添加管理员 custom claim 或将可以访问该集合的用户的文档存储在单独的集合中,并检查请求数据的用户的文档是否存在于该白名单集合中。

match /A/docId 
  allow read: if request.auth != null && exists(/databases/$(database)/documents/whitelisted/$(request.auth.uid));

此规则将允许用户读取集合 A 中的数据,仅当以用户的 UID 作为文档键的文档存在于“列入白名单”的集合中时。

参考资料:

Writing conditions for Cloud Firestore Security Rules

Interface for request.auth

【讨论】:

以上是关于Android 应用的 Firestore 安全设置应该是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据设备平台为 Firestore 指定安全规则?

我无法将数据从 Firestore 获取到我的应用程序中

Ionic Firestore 安全问题和 Firestore 规则

从 Flutter 移动应用程序调用 Firestore 是不是安全?

Android Google Firestore 通知用户应用 Firestore 中有新数据

如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?