Написание правила безопасности Firestore для предотвращения обновления документов до нуля - PullRequest
0 голосов
/ 06 февраля 2020

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

У меня уже есть правила для предотвращения удаления документа, но я волновался, что пользователь все еще может использовать раздел «обновление» безопасности Firestore для обновления документов и очистки всех данных, используя методы «setData» Firestore.

  match /stories/{document=**} {
      allow read, create, update: if request.auth.uid != null;
      allow delete: if request.auth.uid == resource.data.creatorID;
    }

Выше приведен пример правила, которое у меня есть. Могу ли я предотвратить обновление, если документ пустой, используя

resource.data != null || resource.data != "" 

или что-то подобное? Кто-нибудь делал это?

1 Ответ

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

Для всех, кому интересно, для решения этой проблемы мне потребуются определенные ключи. Например, я только позволю пользователям обновлять свои собственные данные (request.auth.id == resource.id) или обновлять определенные поля (лайки, количество подписчиков и т. Д. c ...).

 match /users-metadata/{document=**} {
      allow read: if true;
      allow create: if request.auth.uid != null;
      allow update: if request.auth.uid == resource.id 
      || request.resource.data.keys().hasAny(['userInvites','submission-likes','following-count', 'follower-count']);
    }
...