【问题标题】:Firestore RulesFirestore 规则
【发布时间】:2020-04-07 09:12:48
【问题描述】:

我的 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;
}

      }
    }

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    您的规则中有一些重叠的匹配语句:

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

    您允许对 Firestore 数据库中的所有文档进行读取访问。

    doc(“重叠匹配语句”部分)中所述,“在多个允许表达式匹配请求的情况下,如果任何条件为真则允许访问” .

    所以你所有的其他安全规则都被这个重叠了。

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 2021-07-07
      • 1970-01-01
      • 2018-10-19
      • 2019-08-14
      • 2019-01-09
      • 2018-11-15
      • 2018-07-15
      • 2019-07-05
      相关资源
      最近更新 更多