![](/img/trans.png)
[英]Is it possible to just grant users access to documents that are named after their uid in firestore using security rules?
[英]Firestore Security Rules. Is it Okay for users to know peoples UID?
所以我現在有一個集合,結構如下
Companies (Collection) -> Company (Document) -> Document 包含包括 auth UID 在內的數據,以及一個名為 employs 的子集合,如果有意義的話,它包含單獨的 employ 文檔。
我有兩個問題。
match /databases/{database}/documents {
match /companies/{companyID} {
allow read: if request.auth.uid != null;
allow create,update: if request.auth.uid == resource.data.uid && request.auth.uid == request.resource.data.uid
allow delete: if request.auth.uid == resource.data.uid
}
match /companies/{companyID}/employs/{employID}{
allow read: if request.auth.uid != null
allow write: if request.auth.uid == get(/databases/$(database)/documents/brands/$(document)).data.uid && request.auth.uid == request.resource.data.uid
}
}
所以我的第一個問題是,其他用戶能夠讀取其他用戶的 UID 是否可以,因為我不知道處理寫權限的不同方法,因為我目前正在檢查文檔 ID 是否與請求匹配。 auth.uid。 在文檔中,他們的做法似乎很相似。 但我只需要確保用戶 uid 可以“公開”就可以了。
其次,我的實施是否正確? 為了達到預期的結果,我還應該做些什么嗎? 請反饋或建議,謝謝!
如果您的安全規則設置正確,那么 UID 是否已知通常無關緊要。 但是,您必須自己評估一下。 如果沒有看到您在系統中使用它的所有方式,我們不能肯定地說。
您必須這樣考慮:如果任意用戶知道另一個任意用戶的 UID,那么其他人會知道什么? 如果可以在未經他們同意的情況下獲取個人身份信息,您應該更正這一點。 如果可以以任何方式更改用戶的數據(同樣,未經他們同意),那么您也有問題。
UID 本身不包含任何信息。 這只是一個隨機字符串。 它不可能被傳入請求“欺騙”。 request.auth.uid
始終是登錄用戶的正確 UID,而不是其他人。
您的規則看起來不錯,但我強烈建議使用本地模擬器測試它們。 您可以使用您編寫的測試代碼自行驗證它們是否完全符合您的預期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.