Правила Firebase - Как заблокировать дополнительные данные - PullRequest
0 голосов
/ 07 февраля 2020

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

Скажем, сообщение может быть { title: 'Y', author: X, content: 'lorem...' }

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

Я имею в виду, конечно, вы можете справиться с этим с внешней стороны ... но это не безопасно :)

Я нашел единственный способ справиться с этим, используя облачные функции и установив там необходимые правила / logi c.


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

Я надеюсь, что кто-то может немного осветить эту тему :)

1 Ответ

2 голосов
/ 07 февраля 2020

Вы можете ограничить ключи правилами firestore, но вам нужно обновлять правила каждый раз, когда вы добавляете новые ключи, попробуйте следующее правило

service cloud.firestore {
  match /databases/{database}/documents {
    match /scenarios/{scenario} {//replace scenarios with your collection name
      allow read: if true;
      allow write: request.resource.data.keys().hasOnly(['title','author','content']) == true;
     }
   }
}
...