Как защитить адреса электронной почты от чтения, но сделать их доступными для поиска на внешней стороне с Firestore? - PullRequest
0 голосов
/ 24 января 2020

В основном я пытаюсь найти способ получить адрес электронной почты пользователя без какой-либо аутентификации на определенной веб-странице моего приложения. Тем не менее, мои правила Firebase не позволяют читать документ пользователя, чтобы избежать утечек, и т. Д. c.

Итак, подведем итоги: как я могу запретить людям читать документ пользователя, но при этом сделать его доступным для поиска, чтобы получить некоторые данные (например, адрес электронной почты)?

Уже спасибо!

Изменить для ясности:

Это мои правила для таблицы пользователя:

match /users/{userId} {
    allow read: if belongsTo(userId);
    allow create: if belongsTo(userId);
    allow update: if belongsTo(userId);
    allow delete: if false;
}

Теперь, на определенной странице на моем сайте, мне нужно получить информация определенного пользователя (которая является Dynami c): иногда мне нужно было бы получить информацию о Пользователь Bob , а иногда, возможно, User Doe .

Но мои правила прямо сейчас запрещают кому-либо получать информацию о документах любого пользователя, если вы не аутентифицированы и документ не принадлежит вам.

Так что было бы лучшим способом обойти это правило allow read: if belongsTo(userId); в моем коде. Я думал, что, возможно, HTTP-запрос мог бы помочь мне с облачными функциями, но я не уверен, как этого добиться.

Надеюсь, это прояснит ситуацию. Еще раз спасибо.

1 Ответ

0 голосов
/ 24 января 2020

Похоже, то, что вы пытаетесь сделать, невозможно с правилами безопасности. Если ваши правила не разрешают доступ для чтения к документу, то никто не сможет извлечь из него данные. Невозможно написать правило, которое позволяет кому-либо читать документ, если он просто знает некоторые данные, которые находятся внутри него.

Возможно, вам придется создать API (с использованием облачных функций, если хотите), который принимает адрес электронной почты в качестве параметра, выполняет запрос и отправляет любой результат обратно клиенту.

...