Firebase Flutter:Cloud Firestore 数据库有不安全的规则
Firebase Flutter : Cloud Firestore database has insecure rules
Firebase 不断告诉我
We've detected the following issue(s) with your security rules:
any user can read your entire database
我已经更改了规则,但该规则在我的应用程序中不起作用,因为所有用户都可以从数据库中读取并且只有经过身份验证的用户才能写入数据库。
Firebase 说写入和读取应该在我们登录之前执行。但在我的情况下,每个用户都可以读取,只有登录用户可以写入。
有什么解决办法吗?还是我做错了?
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth != null;
}
}
}
你能明确地将你的阅读设置为假吗?
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if false;
allow write: if request.auth != null;
}
}
}
应该可以了。让我知道它是否仍然存在。
根本原因是即使您只允许经过身份验证的用户读取或写入,但他们可以访问整个数据库,如 Google Cloud Firestore Documentation 中所述。这也意味着任何经过身份验证的用户都可以在您的数据库中写入任何内容。
如果您的数据库为每个用户提供单独的文档,我建议使用以下规则,允许用户仅write/read他们自己的数据。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid === userId;
}
}
}
Firebase 不断告诉我
We've detected the following issue(s) with your security rules: any user can read your entire database
我已经更改了规则,但该规则在我的应用程序中不起作用,因为所有用户都可以从数据库中读取并且只有经过身份验证的用户才能写入数据库。
Firebase 说写入和读取应该在我们登录之前执行。但在我的情况下,每个用户都可以读取,只有登录用户可以写入。
有什么解决办法吗?还是我做错了?
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth != null;
}
}
}
你能明确地将你的阅读设置为假吗?
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if false;
allow write: if request.auth != null;
}
}
}
应该可以了。让我知道它是否仍然存在。 根本原因是即使您只允许经过身份验证的用户读取或写入,但他们可以访问整个数据库,如 Google Cloud Firestore Documentation 中所述。这也意味着任何经过身份验证的用户都可以在您的数据库中写入任何内容。
如果您的数据库为每个用户提供单独的文档,我建议使用以下规则,允许用户仅write/read他们自己的数据。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid === userId;
}
}
}