Правило безопасности Firestore не должно разрешать удаление, но оно позволяет - PullRequest
1 голос
/ 01 апреля 2020

Правила безопасности Firebase, похоже, не работают.

Я хочу запретить удаление объектов других лиц. Я настроил правило для удаления:

if resource == null || request.auth.uid == resource.data.owner

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

Это все мои правила безопасности:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{collection}/{document} {
      allow create: 
        if request.auth.uid == request.resource.data.owner

        && (collection != "Person" 
            || request.resource.data.owner == request.resource.data.id)
      allow update: 
        if request.auth.uid == resource.data.owner
        && request.auth.uid == request.resource.data.owner

        && (collection != "Person" 
            || request.resource.data.owner == request.resource.data.id)
      allow get, delete: 
        if resource == null
        || request.auth.uid == resource.data.owner
      allow list:
        if collection == "XfCard"
    }
  }
}

Чего не хватает?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

После отладки я обнаружил, что запрос выполнен успешно, но объект НЕ удаляется. Мой HTTP-запрос просто не возвращает сообщение об ошибке.

0 голосов
/ 01 апреля 2020

resource.data.owner - это больше путь, чем переменная, которую вы можете использовать для сравнения с другой. Учитывая это, обычно требуется, чтобы вы указали этот путь как c, а не просто выполняли прямое обычное сравнение.

Как видно из этого другого вопроса сообщества здесь , обычно необходимо сравнить владельца с путем владельца документа, что-то, более или менее похожее на приведенный ниже код:

if resource.data.owner == /databases/$(database)/documents/users/$(uid_owner)

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

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

Дайте мне знать, помогла ли вам информация!

...