gpt4 book ai didi

firebase - 如何保护电子邮件地址但使其可通过 Firestore 进行搜索

转载 作者:行者123 更新时间:2023-12-02 17:01:00 25 4
gpt4 key购买 nike

我找不到关于该主题的任何内容,所以这里开始。

我正在使用 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;
}

但是,如果我想让别人可以通过电子邮件或显示名称在我的应用中搜索 friend ,该怎么办?

例如。

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()

最佳答案

您似乎无法通过安全规则强制执行此操作,因此最好的办法是编写一个 Cloud Function(httpcallable)来安全​​地执行查询并将所需结果返回给客户端。此函数会将电子邮件地址作为输入参数,并最少输出一些 bool 值,指示用户是否存在。

关于firebase - 如何保护电子邮件地址但使其可通过 Firestore 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54174979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com