是否有一种方法可以限制Cloud Firestore(用于托管/网络)仅对一个域(例如xyz.com
)进行CRUD操作?
例如,下面的规则未经授权将read, update, delete
锁定,但是您仍然可以将write
内容锁定到数据库中。
service cloud.firestore {
match /databases/{database}/documents {
match /coming-soon-email-ids/{document=**} {
allow write;
allow read, update, delete: if request.auth.uid == !null;
}
}
}
还是我必须在其中集成Google的防火墙?
答案 0 :(得分:2)
Firebase安全规则无法限制对Web域的访问。从广义上讲,这是不可能的,因为Firestore旨在使用Web,Android和iOS从世界各地的移动客户端进行访问。 Android和iOS客户端似乎永远不会来自某个域。他们只是通过提供的客户端库或有时通过Firestore REST API直接访问数据库。 Web客户端甚至可能欺骗其表观域(只有HTTP请求中不安全的“ Referrer”标头才真正提供该域)。
答案 1 :(得分:1)
我有同样的问题,我想出了一个解决方案。您可以匿名登录:
const signIn = async () => {
auth.signInAnonymously()
.then(() => {
// Signed in..
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
然后你可以把你的规则写成:
allow read, write: if request.auth != null;
然后在身份验证中,您可以激活匿名登录方法并添加您的授权域。