Как ограничить размер данных на стороне сервера, которую пользователь может получить в Firebase?

Вопрос:

Я рассказал об основах Firebase (http://szimek.github.io/presentation-firebase-intro) в нашей местной встрече и получил 2 интересных вопроса от аудитории.

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

  1. Есть ли способ ограничить размер данных (на стороне сервера), которые пользователь может извлечь? Даже если у меня есть tweetsRef.limit(10), пользователь может легко изменить его на tweetsRef.limit(10e9) и попытаться извлечь все твиты.

  2. Как запретить пользователям обновлять существующие записи (даже если они были созданы этим пользователем), но разрешить им удалять существующие записи (только если они были созданы этим пользователем)?

Ответ №1

Если вы беспокоитесь о лимитировании, вы можете просто получить твиты на своем сервере вместо клиента (как вы сказали), чтобы пользователи не могли манипулировать ограничениями.

Для вашего второго вопроса это зависит от того, как вы хотите обрабатывать удаление. Часто вы на самом деле не хотите, чтобы объект был удален, поэтому вы можете просто предоставить пользователю права на запись на deleted атрибут. Кроме того, если вы хотите, чтобы они фактически удалили объект, проверьте, что пользователь является создателем и что значение newData равно null.

Вот пример правила безопасности из комментария @Kato ниже (запись/удаление разрешена, предотвращение обновлений):

".write": "!data.exits() || !newData.exists()"

Оцените статью
TechArks.Ru
Добавить комментарий