我将数据存储在Cloud Firestore数据库中。我的应用程序中的用户无需创建帐户即可获取数据,他们也可以在不登录的情况下写入数据。
Google每隔几天就会提醒我,我的数据库不安全,任何人都可以滥用它。如何在不访问Auth变量的情况下进行改进?
我的Firebase规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
有没有一种方法可以使我的数据库更安全而不使用身份验证?
我的应用逻辑:
我的数据库包含姓氏及其来源。如果有人输入名称,他将从数据库中获取来源。例如:“ Doe”->“墨西哥”。如果数据库中不存在姓氏,则调用API并将其值保存到数据库中。每个用户都需要读取和写入权限。
我在这里可以做什么?
由于您需要写入的操作是受限制的(仅插入新项目,因此您可以选择以下选项:
您可以拒绝向最终用户客户端进行写操作,而是向完全执行您需要的操作的云功能发送请求(在验证输入或可能需要的其他任何检查,速率限制等之后)。云功能在通过管理访问权限运行时会忽略安全规则。
使用rules language,您只能允许创建操作。这消除了客户端更新或删除现有数据的能力。这不像以前的方法那么安全,但是对您来说可能没问题:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow create;
}
}
}
此外,请注意,此方法适用于Firestore(正在使用),但不适用于实时数据库。