我有一个使用Firestore作为数据库的Android应用程序。我需要确保它的安全性,但是由于不需要,所以我不使用身份验证服务。
我在考虑是否可以从Android应用程序发送一个唯一的ID,该ID在Firestore规则中可以识别,并且只有用户(使用我的应用程序的用户)可以读写Firestore。
以下是我的安全规则-
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow readwrite ;
}
}
}
我希望我的Firestore数据库对非用户而言是安全的。
答案 0 :(得分:0)
我在考虑是否可以发送唯一的ID
您不能将任意值传递给安全规则。为了安全地发送它并将其纳入安全规则,您必须将其作为自定义声明传递到用户的身份验证令牌中。
但是即使这样做,也会阻止恶意用户找到相同的秘密值(毕竟它必须在您的应用程序中可用),并以相同的方式将其传递到安全规则中。
考虑一下,匿名身份验证和自定义声明可能是您的解决方案。使用anonymous authentication on the client为用户生成一个UID,然后(在受信任的环境中,例如您的开发计算机,您控制的服务器或Cloud Functions)give that user a custom claim和check for that custom claim in your security rules。 / p>