Защита данных военнослужащих от авторизованных пользователей, чтобы обновить свои данные


Мое приложение использует аутентификацию AngularJS + Firebase с помощью google. Когда пользователь регистрируется в приложении, он создает запись этого пользователя в базе данных, как показано ниже:

user
  ->Firebase Unique Key
           -> UserId: "google ID"
           -> User Name: "User Name"
           -> Payment Status:"No"

Теперь, как только пользователь войдет в систему, пользователь увидит способ оплаты, и как только оплата будет сделана, значение базы данных для этого конкретного идентификатора будет заполнено против "статуса оплаты", как показано в JSON выше. После того, как статус оплаты да, то только пользователь может просматривать главную страницу.

Я создал безопасность правила, как показано ниже:

{
"rules": {
    ".read": "true",

  "user":{
    ".write": "auth.provider == 'google' && auth.uid!=null"

  }
}}

Теперь вопрос: любой пользователь, который может войти в систему с помощью google, имеет доступ к записи в эту базу данных. Таким образом, после авторизации пользователь может вносить изменения в базу данных. Также пользователь может запускать свой собственный код с localhost и вносить изменения в базу данных.Я не хочу, чтобы какой-либо пользователь взламывал данные и отмечал статус оплаты как "да" и переходил на основной сайт.

Как убедиться, что авторизованный пользователь не будет выполнять никаких вредоносных действий в этом база данных.

1 4

1 ответ:

Firebase использует модель безопасности на основе идентификации: вы защищаете доступ к данным на основе идентификации пользователя. Как только вы разрешите пользователю написать определенное свойство, он сможет его записать.

В вашем случае, кажется, что это плохая идея, чтобы позволить пользователю изменить свой статус оплаты. Таким образом, у них не должно быть доступа на запись к этому свойству, независимо от того, запускают ли они ваше приложение или свой собственный код.

Таким образом, вы должны будете иметь другую сущность, задающую это поле. Это может будь то администратор-человек или сервер.

Общение с людьми-не такая уж редкость, как вы думаете. Многие веб-службы начинают с того, что владелец проверяет платежи и обновляет защищенные метаданные (статус платежа в вашем сценарии). Как только это становится неуправляемым, вы, вероятно, готовы к другому варианту.

Серверможет работать под доверенными учетными данными , выполнять необходимые проверки и затем устанавливать статус оплаты пользователя. Обратите внимание, что это не обязательно будьте очень мощным сервером, так как все, что он делает, это взаимодействует с базой данных Firebase. Смотрите эту статью для хорошего объяснения.