如果我没有设置任何 Cloud Firestore 安全规则,攻击者如何能够访问我的 Cloud Firestore 数据库

问题描述 投票:0回答:1

示例

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}
{
  "project_info": {
    "project_number": "project-number",
    "project_id": "project-id",
    "storage_bucket": "project-storage-bucket"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "mobilesdk_app_id",
        "android_client_info": {
          "package_name": "com.example.sample"
        }
      },
      "oauth_client": [
        {
          "client_id": "client_id..apps.googleusercontent.com",
          "client_type": 3
        }
      ],
      "api_key": [
        {
          "current_key": "api_key"
        }
      ],
      "services": {
        "appinvite_service": {
          "other_platform_oauth_client": [
            {
              "client_id": "client_id.apps.googleusercontent.com",
              "client_type": 3
            }
          ]
        }
      }
    }
  ],
  "configuration_version": "1"
}

我正在构建一个将使用云 Firestore 的 Android 应用程序。我知道攻击者可以反编译该应用程序并获取 google-services.json 文件。

但是他们如何知道数据库详细信息,例如databaseId等。

android firebase google-cloud-firestore
1个回答
0
投票

如果您使用这些规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

这意味着您允许任何知道您的项目 ID 的人从您的 Firestore 数据库中读取/写入。这显然很糟糕,因为恶意用户可以利用它。

因此只知道您的项目 ID 的人就可以进行写入和读取操作。这意味着您的账单也会增加。

确实,您可以在短时间内使用这些设置进行测试,但绝不能在生产环境中使用。因此,请务必在实施 Firebase App Check 的同时编写正确的规则:

防止未经授权的客户端访问您的后端资源,从而保护您的 API 资源免遭滥用。

© www.soinside.com 2019 - 2024. All rights reserved.