示例
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等。
如果您使用这些规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
这意味着您允许任何知道您的项目 ID 的人从您的 Firestore 数据库中读取/写入。这显然很糟糕,因为恶意用户可以利用它。
因此只知道您的项目 ID 的人就可以进行写入和读取操作。这意味着您的账单也会增加。
确实,您可以在短时间内使用这些设置进行测试,但绝不能在生产环境中使用。因此,请务必在实施 Firebase App Check 的同时编写正确的规则:
防止未经授权的客户端访问您的后端资源,从而保护您的 API 资源免遭滥用。