iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
佛心分享-IT 人自學之術

從零開始的MySQL開發旅程系列 第 24

Day24 Firebase Security Rules 安全規則 基本寫法

  • 分享至 

  • xImage
  •  

昨天的內容講到Rules安全規則的簡單概念,今天會講到Firestore與RealTime Database的Rules 安全規則的基本寫法

Firestore Rules 安全規則

  • match語法
    • 負責識別哪些文件與資料夾
  • allow語法
    • 負責相對應的權限
    • 分為read( 讀取 ) 和write( 寫入 ) 兩種,如果只有指定這兩種的權限,則細分的規則就會全部按照父層的定義進行,透過這些規則的交互搭配,就能提高資料庫的彈性與安全性
    • https://ithelp.ithome.com.tw/upload/images/20240910/201687592JdWaXOske.png
    • 基本寫法
      • 最外層兩行不用更動,表整份資料庫的路徑;內層的match是指定路徑;並由if條件式判斷true、false來決定讀取read或寫入write的權限(如果allow後面不加if條件式則會預設為true,不寫allow,預設則是false)
        service cloud.firestore{ ----------------不用更動
         match/databases/{database}/documents{---不用更動
          match/路徑{
           allow read , write : if 條件判斷;
           }
          }
         } 

下圖為實際firestore的rules規則,其中可以看到內層的match透過萬用字元(**)指定資料庫下的「所有的文件」都有權限可以寫入和讀取
https://ithelp.ithome.com.tw/upload/images/20240910/20168759zb5A0uvOi8.png
* rules中不會限制有幾個match,但如果皆是屬同一文件,只要任一個allow的判斷回傳為true,就有權限可以讀取或寫入

RealTime Database Rules 安全規則

  • 使用類似 JSON 格式的寫法
    • .read 是否允許讀取資料,true可讀取、false不可讀取
    • .write 是否允許寫入資料,true可寫入、false不可寫入
    • .validata 判斷值、屬性、子屬性...等的正確格式
  • 基本寫法
   {
     "rules" : {
     ".read" : true (or false),
     ".write" : true (or false)
      }
    } 

https://ithelp.ithome.com.tw/upload/images/20240910/20168759JRDzWSHbvb.png
* 規則順序-淺層判斷至深層(只適用於.read和.write)
* 只要是存取資料,規則的true與false都會是從 root 根節點(淺層)開始判斷
* 不寫讀寫的規則,會變成預設值false(false不會影響深層)
* 如不想淺層規則影響深層規則,可以把相關規則設定留空,就會自動採用深層的設定

  • 預設變數 predefined variables
    • 都有特定用法
    • now
      • 表firebase資料庫寫入的時間
      • 單位:毫秒
      • 只適用於 .validata
    • root
      • 表根節點
      • 通常會搭配.child(子節點)等指令來協助判斷
      • 只適用於.read、.write
    • newData
      • 表新資料
      • 只適用於.write、.vaildate
    • data
      • 表以存在的資料
      • .read、.write、.validata皆適用
    • $變數
      • 通用變數符號,表該層所有節點
      • .read、.write、.validata皆適用
    • auth
      • 搭配firebase專案的註冊帳號功能,決定是否可以讀取或寫入資料
      • 只適用於.read、.write
  • 參考資料

上一篇
Day23 Firebase Security Rules 安全規則
下一篇
Day25 Firebase Storage
系列文
從零開始的MySQL開發旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言