Безопасность Firebase, когда пользователь не контролирует адрес электронной почты, который он регистрирует как - PullRequest
0 голосов
/ 06 июля 2018

Сценарий:

  • Я храню конфиденциальные данные в Firestore со следующими правилами безопасности:

    A. allow read: if resource.data.email == request.auth.token.email;
    
    B. allow read: if resource.data.email == request.auth.token.email && request.auth.token.email_verified == true;
    
  • Злоумышленник Боб загружает мое приложение JavaScript и использует клиентские вызовы для создания учетной записи с электронным адресом «x @ example», который они не контролируют, и паролем по своему выбору без проверки электронной почты. Боб сейчас вошел в систему.

  • Законный пользователь Алиса хочет создать учетную запись для своего собственного адреса электронной почты "x @ example", выполнить проверку электронной почты и прочитать данные из Firestore.

Вопросы:

  1. Сразу после регистрации Боб сможет ли он читать данные в Firestore, которые соответствуют правилу безопасности A?

  2. Сразу после регистрации Боб сможет ли он читать данные в Firestore, которые соответствуют правилу безопасности B?

  3. Когда Алиса попытается зарегистрироваться, будет ли ей запрещено делать это, потому что Боб уже создал учетную запись с этим адресом электронной почты? Если да, то как Алиса должна зарегистрироваться?

  4. Как только Алиса зарегистрируется (я полагаю, вы должны заставить ее сбросить пароль), Боб все еще будет входить в систему? Если да, может ли он читать данные, которые соответствуют правилам безопасности A и B?

1 Ответ

0 голосов
/ 06 июля 2018
  1. Да
  2. Нет
  3. Да. Но вы можете дать ей возможность отправить письмо для сброса пароля Учитывая, что Алиса имеет доступ к почтовому ящику, она может использовать это для сброса пароля.
  4. Боб будет оставаться в системе до тех пор, пока его токен ID не будет нуждаться в обновлении или пока система не вызовет обновление. В этот момент ему нужно будет ввести новый пароль, который он не может знать.
...