【发布时间】:2019-01-14 02:04:26
【问题描述】:
我找不到有关该主题的任何内容,所以就到这里。
我正在使用带有用户的 Firebase Cloud Firestore 数据库创建应用。
我的目标是“防止人们窃取所有电子邮件地址,但仍使它们可供搜索”
我的用户数据按用户保存,如下所示:
在/users/{userId}
{
email: 'user@gmail.com',
displayName: 'James Liverstone'
}
我可以使用以下规则保护用户数据:
match /users/{userId} {
allow write, read: if request.auth.uid == userId
&& request.auth.uid != null;
}
但是,如果我想让某人可以通过电子邮件或显示名在我的应用中搜索朋友,该怎么办?
例如。
const searchVal = 'user@gmail.com' // search value from <input>
firebase.firestore().collection('users').where('email', '==', searchVal)
由于read 规则,这是不可能的。但是,如果我打开阅读以允许所有人,您可以像这样窃取我用户的所有电子邮件地址:
firebase.firestore().collection('users').get()
我怎样才能防止人们窃取所有电子邮件地址,但仍使其可搜索?
简而言之:
- 允许:
firebase.firestore().collection('users').where('email', '==', searchVal) - 阻止:
firebase.firestore().collection('users').get()
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security