2014-01-22 41 views
1

我正在開發API的客戶端,該API不適合此API的普通客戶端的配置文件。此api要求用戶使用用戶/密碼對或會話密鑰進行身份驗證。然而,會話密鑰只有在用戶未在別處進行身份驗證時纔會持續。每當會話過期時讓用戶重新輸入密碼是不可行的。目前,在開發應用程序時,我一直在MySQL中以明文存儲密碼。我想爲生產客戶避免這種情況。我需要以明文形式將這些密碼發送給服務時,如何保護這些密碼?如何避免存儲我需要以純文本訪問的用戶密碼?

+0

存儲它們的哈希表,然後將該哈希與數據庫存儲的哈希進行比較? –

+2

[Block ciphers,salt,AES,MySQL以及有關憑證存儲的最佳做法]的可能重複(http://stackoverflow.com/questions/15734892/block-ciphers-salt-aes-mysql-and-best-practices- around-credential-storage) – Brad

+0

閱讀我鏈接到的問題的評論。 SLaks對RSA的建議要好得多,我也是在類似的情況下做的。 – Brad

回答

0

使用散列算法(例如SHA512(http://www.php.net/manual/en/function.hash.php))對註冊時的密碼進行加密。

然後,當用戶使用其用戶名和密碼登錄時,對密碼進行加密,並將其與數據庫中存儲的密碼進行覈對。

+0

這種解決方案在這種情況下不起作用(儘管這通常是我在負責身份驗證時所做的),因爲我需要將明文密碼發送給第三方以訪問其系統的一部分。他們做哈希比較。 – abartow

+0

AH,所以你不能控制API?他們要求你以明文形式發送用戶名?唯一的另一種方式,我會看着這樣做,確保連接被加密(SSL)並通過該隧道發送明文 –

+0

是的,連接到API是HTTPS,但我必須存儲用戶的密碼,所以我可以隨時將他們發送到服務。我不想把它們放在純文本中。 – abartow

相關問題