我正在使用 Firebase 匿名身份驗證來控制對我的 Firestore 資料的訪問,而無需麻煩的注冊。
在閱讀了許多帖子并盡我所能查找檔案之后(我仍在學習),我的理解是
- Firebase 匿名身份驗證不如其他 Firebase 身份驗證選項安全
- 任何擁有合適技能的人都可以使用我的 API 密鑰創建一個 UID 來授予訪問權限
- 為了緩解這種情況,我們使用規則(在本例中為 Firestore 規則)
所以我為我的所有收藏創建了規則,只讓一些收藏“獲取”:
match /collection/doc {
allow get: if request.auth != null;
}
檔案 ID 必須與 UID 匹配的其他集合:
match /collection/{uid} {
allow get, write: if request.auth != null && request.auth.uid == uid;
}
這很棒,并且在我測驗時似乎運行良好;但是,有一個集合將包含僅“獲取”的資料,但我認為是敏感的(姓名和作業電話號碼)。
我想了解的是:任何“懷有惡意”獲得訪問權限的人是否有可能獲得所有集合的串列以及里面的所有內容,從而使他們能夠進入并訪問“獲取”的敏感檔案' 只要?如:
allow get: if request.auth != null;
我使用“get”而不是“read”,因為我聽說“get”會阻止通過管理 SDK 執行串列查詢。
我的想法是,如果他們無法獲得集合/檔案的串列,他們將無法訪問敏感資料,因為路徑對他們來說是未知的。或者這是一個天真的假設?
uj5u.com熱心網友回復:
Firebase 匿名身份驗證不如其他 Firebase 身份驗證選項安全
匿名身份驗證與大多數其他登錄方法一樣安全,它只是不會讓您知道用戶是誰。但他們仍會獲得 Firebase 分配給他們的 UID,這使您可以保護該用戶的資料訪問。
使用此規則,您顯示:
match /collection/{uid} {
allow get, write: if request.auth != null && request.auth.uid == uid;
}
用戶只能讀取和寫入與其 UID 匹配的檔案。因此,無論他們是匿名登錄還是使用其他提供商登錄,他們都只能讀/寫自己的檔案。
所以這些規則確實不允許任何用戶獲取其他用戶檔案的串列。即使您允許該list操作(或組合read操作),整個集合的讀取操作也會被拒絕,因為request.auth.uid == uid條件要求他們只讀取自己的檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492828.html
標籤:火力基地 谷歌云火库 firebase-安全
