簡體   English   中英

Firebase 安全規則:檢查數據庫值是否與檢查身份驗證同樣安全?

[英]Firebase Security Rules: Is checking database value equally secure with checking auth?

我想知道檢查用戶的“數據庫值”(下面的示例)是否與“檢查身份驗證”(下面的示例)一樣安全、更安全或更不安全。

檢查“數據庫值”對應用程序來說是否足夠安全?

檢查數據庫值:

"root.child('account').child($uid).child('role').val() === 'admin'"

檢查授權:

"auth != null"

如果只有您或任何授權用戶可以在數據庫中編輯該角色,那么使用安全規則是安全的。 我建議在數據庫中存儲一個單獨的admins節點並檢查該節點中的用戶 UID,以便更容易編寫安全規則來保護它。

admins
  |-user1: true
  |-user2: true

然后你可以編寫以下規則來檢查用戶是否是管理員:

root.child('admins').child(auth.uid).val() === true

如前所述,確保只有授權用戶才能向該節點添加新管理員。

但是,請注意實時數據庫中的數據只能在實時數據庫的安全規則中訪問。 如果您以后需要使用 Firestore 或 Storage,您將無法在其安全規則中檢查管理員。 在這種情況下,使用自定義聲明可能是更好的方法。


如果您需要檢查請求數據的用戶是否是管理員,您應該使用auth.uid而不是$uid $uid是一個通配符,會在被訪問的路徑中占用匹配值。 使用$uid本身聽起來並不安全,就好像我嘗試向/path/($uid=someId)發出請求一樣,您的規則將檢查管理節點中的someId以便用戶可以嘗試傳遞多個 ID,但不是安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM