Правила Пожарного магазина - PullRequest
0 голосов
/ 07 апреля 2020

В моей базе данных Firestore есть следующие правила. Но я все еще получаю уведомление от Firestore, что правила, которые я установил в моей базе данных, не безопасны. Пожалуйста, смотрите коды ниже. Любые предложения или рекомендации, чтобы сделать базу данных более безопасной?

    rules_version = '2';
    service cloud.firestore {
    match /databases/{database}/documents {

match /{document=**} {
  allow read: if true;
  allow write: if userIsAdmin();
}

match /Basket/{Basket} {
  allow read, update, delete: if userOwnPost();
  allow create: if request.auth.uid != null;

}

match /AllOrders/{AllOrders} {
    allow read, create, update: if userOwnPost(); 

}

 match /Items/{Items} {
    allow update: if userOwnPost(); 

}

match /Voucher/{Voucher} {
    allow update: if userOwnPost(); 

}

match /User/{User} {
    allow read, update: if userOwnPost();
  allow create: if request.auth.uid != null;
}

function userIsAdmin() {
    return getUserData().userRole == 'Admin';
}

function getUserData() {
    return get(/databases/$(database)/documents/User/$(request.auth.uid)).data;
}


function userOwnPost() {
  return getUserData().objectId == request.auth.uid;
}

      }
    }

1 Ответ

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

В ваших правилах есть несколько совпадающих операторов совпадения:

С

match /{document=**} {
  allow read: if true;
  allow write: if userIsAdmin();
}

вы разрешаете чтение для всех документов в вашей базе данных Firestore.

Как объяснено в do c (раздел «Перекрывающиеся операторы соответствия»), «в случае, когда несколько разрешающих выражений соответствуют запросу, доступ разрешается, если выполняется любое из условий true".

Так что все остальные ваши правила безопасности просто перекрываются этим.

...