簡短的問題:如果我在客戶端公開其他用戶的UID,有什麼風險/問題?Firebase數據庫 - 與在客戶端暴露uid相關的風險?
我的情況: 我正在構建一個測試android應用程序,需要能夠讓1)用戶foo請求授權以便2)訪問用戶A的私人數據。
我不知道這是不是一個「嗯」的事實,但我似乎無法在Firebase上發現任何關於「不暴露UID」的警告。我一直在瀏覽用戶安全部分和Firebase的聊天示例演示,並且通常的做法似乎是將授權用戶的uid創建爲「共享」或「授權」字段爲真。我的問題主要是關於第一步。以下是我的數據結構的一個片段。
{
"users" : {
"uid_of_user_a" : {
"requests" : {
"-KeXTQeFJ2gAiaazteO1" : {
"requestUid" : "uid_of_user_foo",
"targetUid" : "uid_of_user_a",
"timeStamp" : 123456
}
}
}
}
}
我的想法是這樣的。
的請求字段中的規則,它讀出用於與 uid_of_user_a用戶/寫,和可寫的任何認證的用戶,只要這種用戶 推在targetUid匹配uid_of_user_a。
在客戶端,用戶A有一個onChildEventListener,並附有對該字段的引用。當客戶端收到onChildAdded回調時,會顯示一個對話框並要求確認。
如果得到確認,則客戶端側檢索來自請求消息請求者的UID,並將其推到「授權」的字段然後
用戶A的私有數據可以通過在授權字段中列出的UID可讀。
問題:需要向客戶端公開其他用戶的uid。這種方法類似於在電話上呼叫某人,呼叫者必須首先知道接收方的電話號碼。所以,在沒有真正發出電話號碼和電子郵件的情況下,某人必須以某種方式瞭解UID,以便甚至能夠傳遞信息並要求獲得可分享的數據,對嗎?......但是,我的直覺手段似乎很簡單。
我是新來的firebase數據庫和一般的用戶認證,所以請原諒我的法語:)在此先感謝所有的專家。
謝謝您的回覆,我現在感到很放心。作爲初學者,我對uid有所保留,因爲Firebase數據庫標準練習使用「$ uid === auth」。uid「作爲允許用戶訪問他們的私人數據的規則,我的直覺(不知道auth的實際工作原理)是用戶能夠使用uid進行欺騙,使用UID進行用戶間的授權是一種標準做法嗎? –
該規則確保只有具有該UID的完全認證的用戶才能訪問那裏的數據,它不能被欺騙 - 它只適用於使用用戶登錄的Firebase身份驗證的應用程序。它不僅僅是一些Web API的參數。 –