一點點背景 -在MySQL *中臨時存儲明文密碼是否安全?
我運行一個運行在Java中的遊戲服務器和一個運行在PHP(phpbb)中的論壇。我將遊戲和論壇帳戶關聯起來,以便在遊戲中更改密碼會自動更改論壇帳戶的密碼。這兩個系統使用不同的密碼散列算法,我需要使用phpbb的內置函數更新論壇端的密碼散列,這意味着我必須從PHP腳本(而不是運行自己的代碼)調用它們。
爲了做到這一點,我決定讓Java調用PHP腳本,每當需要更改密碼時向PHP腳本發出HTTP請求,以觸發完成密碼更改過程的PHP腳本論壇帳戶。但是,我不希望將純文本密碼放在任何HTTP調用中,因爲它可能會顯示在日誌文件中,也可能顯示在其他可利用的區域中。我目前的想法是,當Java端更改密碼時,會將新的明文密碼放入數據庫表中,然後發出HTTP請求來觸發PHP腳本,以避免哈希或敏感信息進入HTTP請求。 HTTP調用將僅傳遞要更改的帳戶的用戶名,以及共享密鑰加上用戶名的md5哈希以進行身份驗證。當PHP腳本運行時,它從數據庫中爲用戶檢索新的明文密碼,立即刪除它,然後通過phpbb的哈希算法運行明文密碼並更新論壇數據庫。
在典型情況下,明文密碼在刪除前可能會在數據庫中不到一秒。理想情況下,我不會將它存儲在任何地方,但我不確定除非我無法預測論壇的密碼哈希值是什麼,否則還不知道如何將所需的更改從Java傳遞到PHP,所以我需要以某種方式發送明文密碼到執行哈希的PHP腳本。
有關更好的方式來做到這一點的任何想法,或者是否有任何有關在很短的時間內存儲明文密碼的反饋?我認爲MySQL登錄是安全的,不會與其他人或項目共享。
謝謝!
在將數據存儲在數據庫之前,您可以從Java對數據進行加密,並且在從數據庫讀取數據後立即從PHP解密它? – 0xFE
加密是一個不錯的想法,因爲顯然你已經有一個共享的祕密。只需通過HTTPS和POST將用戶名和明文密碼發送到PHP,就像表單數據一樣? – slashingweapon
更好的是,爲PHP BB創建一個自定義身份驗證插件https://wiki.phpbb.com/Authentication_plugins 這支持自定義密碼身份驗證方案,並且應該允許您利用單點登錄(如果適用)。 –