Implementation

我應該如何儲存需要以純文字形式提供的密碼?

  • October 24, 2017

假設我需要為少數使用者儲存第三方網站的登錄資訊,我該怎麼做?

由於我正在登錄第三方網站,因此我需要純文字密碼,而不是散列密碼。不,有問題的網站不提供任何 API。

此外,我正在使用的伺服器可供其憑據儲存在其上的人訪問,因此他們將能夠獲得至少一對明文/密文對,即他們自己的。

鑑於這兩個條件,有沒有辦法在伺服器上儲存使用者憑據,或者我應該在每次使用者登錄時詢問它們?

您可以使用從使用者密碼(到您的站點)派生的一些密鑰對它們進行加密。

當然,這假設您以純文字(或任何始終相同的形式)獲取使用者的密碼 - 因此您需要與使用者建立加密連接。不允許任何非 SSL 登錄。

您可以使用一些密鑰派生函式(如 PBKDF 或 bcrypt)從密碼中派生加密密鑰(如果這使用鹽,請確保鹽與您用於密碼檢查的鹽不同)。您還可以在這裡使用一些伺服器機密,但是如果您說某些潛在的攻擊者無論如何都可以(讀取)訪問伺服器,那麼這並不會真正提高安全性。

然後使用 AES 等標準對稱加密算法對第三方網站儲存的登錄資訊進行加密/解密。

當然,您還應該使用與該第三方網站的加密連接。

引用自:https://crypto.stackexchange.com/questions/345