簡體   English   中英

Firestore 安全規則。 用戶知道人們的 UID 可以嗎?

[英]Firestore Security Rules. Is it Okay for users to know peoples UID?

所以我現在有一個集合,結構如下

Companies (Collection) -> Company (Document) -> Document 包含包括 auth UID 在內的數據,以及一個名為 employs 的子集合,如果有意義的話,它包含單獨的 employ 文檔。

我有兩個問題。

  1. 基本上,我希望任何經過身份驗證的用戶都能夠讀取數據,因此任何用戶,如果他願意,都可以讀取公司的 uid,以及其他數據,包括子集合中的數據。 但是對於寫權限,我只希望公司能夠編輯自己的文檔及其雇用的子集合文檔。 因此,為了實現這一點,我使用了以下安全代碼
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.

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