Firebase cloud firestore: как предотвратить появление мошеннических полей?

Документация firebase позволяет легко проверить наличие дочерних записей:

".validate": "newData.hasChildren(['name', 'age'])"

Как создать правило, гарантирующее, что любые новые данные содержат ТОЛЬКО эти поля «имя» и «возраст»?

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

Doug Stevenson 10.09.2018 07:46
0
1
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте что-то вроде этого:

allow create: if (['name', 'age'].hasAll(request.resource.data.keys()) &&
    request.resource.data.size() == 2

Разрешены только два ключа, и они должны быть именем и возрастом.

См. Справочник по правилам безопасности Firestore, чтобы узнать больше о том, что все вы можете делать в правилах, и о типах данных того, с чем вы работаете.

Или для еще более сложной проверки рассмотрим облачные функции.

Upvote 10.09.2018 07:54

@ArtjomZabelin Cloud Functions не может предотвратить попадание плохих данных в вашу базу данных. Лучшее, что он может сделать, это удалить плохие данные после их создания.

Doug Stevenson 10.09.2018 07:55

Хм ... так что у вас есть запрос функции прямо здесь: D триггер beforeWrite / Update

Upvote 10.09.2018 07:57

@ArtjomZabelin В Cloud Functions никогда не будет триггеров типа «до». Система работает не так. Бессерверные среды работают, отправляя ваши функциональные события, которые представляют изменения, уже внесенные в ваш проект. Перехват изменений в продуктах не входит в компетенцию функций.

Doug Stevenson 10.09.2018 08:00

Другие вопросы по теме