Безопасно ли разрешать пользователю писать данные другого пользователя? - PullRequest
0 голосов
/ 17 июня 2020

Я читал о правилах Firebase и некоторых методах защиты данных и тому подобном. У меня есть Firebase RealTimeDatabase (с basi c, если пользователь аутентифицирован, тогда правила чтения / записи разрешают чтение / запись), которая имеет такую ​​структуру:

"MyApp"{

     "Users"{

         "EXAMPLEUID1"{
                 Name: joe snow
                 Bio: i am joe snow
                 Email: joesnow@fakeemail.com
                 Coins: 900
         }

         "EXAMPLEUID2"{
                 Name: jane snow
                 Bio: i am jane snow
                 Email: janesnow@fakeemail.com
                 Coins: 134
         }

     }
}

Допустим, в моем приложении у меня есть кнопка, которая позволяет пользователю Джейн Сноу отдать 100 своих монет Джону Сноу. Я знаю, что разрешаю Джейн Сноу иметь доступ для чтения / записи к пользовательскому узлу John Snows, чтобы иметь возможность давать ему монеты, но он также дает доступ для чтения / записи ко всему остальному в его узле.

Это рискованная практика?

В моем приложении нет возможности разрешить любому пользователю видеть электронную почту любого другого пользователя, не говоря уже о том, чтобы обновить или изменить ее (потому что я не отображаю информацию в приложении), поэтому я не понимаю, насколько это небезопасно. Любая помощь / совет будут очень признательны! Заранее спасибо.

1 Ответ

1 голос
/ 17 июня 2020

Если ваши правила допускают нежелательное чтение или запись, вы просто должны принять на себя риск того, что это произойдет. Не имеет значения, выполняет ли ваш код эту операцию напрямую. Важно только то, что аутентифицированный пользователь может это сделать, если захочет. Они могут просто использовать Firebase REST API для прямого доступа к базе данных со своими собственными учетными данными, полностью минуя приложение. Вы ничего не можете сделать, чтобы предотвратить это, пока вы разрешаете чтение и запись с помощью правил безопасности.

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

...