所以這個問題正在研究安全和加密問題,這個問題可能還沒有被很多人遇到。答案可能是理論上的。讓我概述這種情況...如何支持通過排隊作業通過外部API安全創建用戶帳戶?
- 網站前端是通過後端API驅動的。後端有一個端點處理通用註冊表,其中
username
和password
。它使用SSL。 - 後端API通過異步作業隊列處理註冊。隊列不會返回API服務器的響應。這是一個設置和忘記操作來排隊註冊。
- 排隊的工作是由工人拿起。工作人員負責創建用戶帳戶。這些工作人員需要訪問明文用戶密碼,以便他們可以使用密碼觸發第三方API註冊呼叫。
因此,問題的真正癥結在於密碼同步到第三方API,而沒有透露它窺探的目光。隊列中存在的問題是不能直接從全局POST數據中直接訪問明文密碼,這意味着它需要以某種方式存儲在隊列中。
該隊列可以輕鬆存儲散列的密碼並直接將其複製到用戶表中。但是,此解決方案不允許將密碼與第三方API同步,因爲它已經被加密。我玩弄雙向加密,但我全心全意地擔心密碼容易被攻擊者解密。
任何人都可以想到一個安全的方式來處理密碼同步這種情況?
隊列是一個需求,並且假定這是任何有權訪問服務器的人都可讀的。密碼不一定非要同步;第三方API的密碼可以是原創的衍生產品,只要有一種安全的方法可以通過登錄用戶解密而不需要提供密碼。這主要是爲了模擬單點登錄與不支持SSO的第三方API。
我應該補充一點,我無法控制第三方API;只有客戶端和服務器API。第三方API與服務器API分開。第三方API的期望是,他們在註冊期間收到明文密碼,並且他們還收到用於登錄的明文密碼。出於模仿單一登錄的目的,我不能要求用戶輸入密碼,但可以100%確定他們的登錄狀態。 – 2013-03-12 20:46:46
@cballou:然後上面的選項3聽起來像你想要的。他們登錄到您的系統。您的系統使API調用通過未加密密碼的第三方。希望他們至少有SSL。在您身邊使用可逆加密存儲密碼。 – NotMe 2013-03-12 20:49:54
另外,關於雙向加密,除非解密的方法沒有被root用戶破解,否則對我來說這不是最優的。如果我的服務器遭到入侵,我擔心攻擊者可以完全訪問所有第三方帳戶。雖然這不會對用戶的主密碼造成問題,但肯定會違反這些第三方帳戶密碼的安全性並授予訪問權限。 – 2013-03-12 20:51:20