Я ценю, что варианты этого были опубликованы ранее, однако я не вижу ни одного, который напрямую затрагивает эту проблему. Рекомендация Firebase заключается в том, что для веб-интерфейсов JS включает достаточно информации, чтобы клиентская сторона JS могла идентифицировать рассматриваемое приложение. Этот конфиг можно использовать для всех необходимых действий. В моем случае:
createUserWithEmailAndPassword / signInWithEmailAndPassword / sendEmailVerification
В основном это означает, что любой может просто начать создавать пользователей для моего приложения. Они также могут войти в систему, что означает, что любые правила данных, которые у меня есть, например, как показано ниже, теперь открыты для обновлений во всем мире.
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /clubs/{club}
{
allow write: if isSignedIn();
allow read: if true;
}
}
Вот что я сделал. Я добавил роль в список пользователей, и список пользователей не доступен для записи никому, кроме моих внутренних процессов, которые обходят правила.
Таким образом, хотя злоумышленники могут создавать учетные записи и входить в систему, они могут никогда не отдавайте себе самые важные роли. Это по-прежнему оставляет мне 2 проблемы: во-первых, это просто не совсем правильно :-), во-вторых, как я узнаю, какие учетные записи являются действительными людьми, пытающимися подписаться на мое приложение, а какие - поддельными. Те, которые действительны, нуждаются в обновлении их ролей в серверной части. Сейчас, когда у меня около 5 пользователей моего приложения, это нормально (ха-ха), но как люди справляются с этим в более объемном приложении?
Я ценю, что вы нашли время, чтобы прочитать это, и я ценю любые мысли и / или предложение, которое может у вас быть.