Защита данных военнослужащих от авторизованных пользователей, чтобы обновить свои данные
Мое приложение использует аутентификацию 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 ответ:
Firebase использует модель безопасности на основе идентификации: вы защищаете доступ к данным на основе идентификации пользователя. Как только вы разрешите пользователю написать определенное свойство, он сможет его записать.
В вашем случае, кажется, что это плохая идея, чтобы позволить пользователю изменить свой статус оплаты. Таким образом, у них не должно быть доступа на запись к этому свойству, независимо от того, запускают ли они ваше приложение или свой собственный код.
Таким образом, вы должны будете иметь другую сущность, задающую это поле. Это может будь то администратор-человек или сервер.
Общение с людьми-не такая уж редкость, как вы думаете. Многие веб-службы начинают с того, что владелец проверяет платежи и обновляет защищенные метаданные (статус платежа в вашем сценарии). Как только это становится неуправляемым, вы, вероятно, готовы к другому варианту.
Серверможет работать под доверенными учетными данными , выполнять необходимые проверки и затем устанавливать статус оплаты пользователя. Обратите внимание, что это не обязательно будьте очень мощным сервером, так как все, что он делает, это взаимодействует с базой данных Firebase. Смотрите эту статью для хорошего объяснения.