簡體   English   中英

暫時在MySQL *中存儲明文密碼是否安全*?

[英]Is it safe to store plaintext passwords in MySQL *temporarily*?

一點點背景 -

我運行一個用Java運行的游戲服務器,以及一個用PHP運行的論壇(phpbb)。 我將游戲和論壇帳戶關聯起來,這樣更改游戲中的密碼會自動更改論壇帳戶的密碼。 這兩個系統使用不同的密碼哈希算法,我需要使用phpbb的內置函數更新論壇端的密碼哈希,這意味着我必須從PHP腳本調用它們(而不是運行我自己的代碼)。

為了做到這一點,我決定讓Java調用PHP腳本,只要需要更改密碼就向PHP腳本發出HTTP請求,以觸發完成論壇帳戶密碼更改過程的PHP腳本。 但是,我不想將明文密碼放在任何HTTP調用中,因為它可能會顯示在日志文件中,也可能顯示在其他可利用區域中。 我目前的想法是,當Java端更改密碼時,它會將新的明文密碼放入數據庫表中,然后發出HTTP請求以觸發PHP腳本,這樣就不會有任何散列或敏感信息進入HTTP請求。 HTTP調用只傳遞要更改的帳戶的用戶名,以及共享密鑰的md5哈希加上用戶名,以進行身份​​驗證。 當PHP腳本運行時,它從數據庫中檢索用戶的新明文密碼,立即刪除它,然后通過phpbb的散列算法運行明文密碼並更新論壇數據庫。

在典型條件下,明文密碼在刪除之前可能在數據庫中不到一秒鍾。 理想情況下,我根本不會將它存儲在任何地方,但是當我無法預測論壇的密碼哈希是什么時,我不確定如何將所需的更改從Java傳遞到PHP,所以我需要以某種方式發送執行散列的PHP腳本的明文密碼。

有關更好的方法的任何想法,或有關於在很短的時間內存儲明文密碼的任何反饋? 我認為MySQL登錄是安全的,不與其他人或項目共享。

謝謝!

不要存儲明文密碼。 如果你的游戲變得流行,它可能成為持續攻擊黑客的目標,特別是如果它將包含貨幣方面(即 - 魔獸世界,travian等)。 在這種情況下,您需要假設盡管您嘗試保護系統,但有人可能會破解它,因此會獲得敏感數據。 您應該使用標准加密機制來執行此任務(例如,通過HTTPS以安全的方式將密碼發送到論壇系統)。 我還建議你去探討@Joshua Kaiser的評論 - 單點登錄可能是滿足你需求的關鍵,不要試圖在這里重新發明輪子。 我可以告訴你我使用kerberos作為例子,Kerberos有一個票證機制,可以在應用程序之間重復使用票證。 不幸的是我不懂PHP,也不知道論壇框架如何使用不同的身份驗證模塊。

PS - 我錯誤地發了兩次這個答案,並嘗試按“刪除帖子” - 我希望stackoerflow能夠解決這個問題。

這取決於您使用Java而不是PHP的數據庫。 在PHP中使用PDO連接到不同的數據庫並操縱數據。 您可以嘗試簡單地將一個DB作為主密碼存儲,另一個作為salve - 取決於反向加密。

將PHP(例如)PDO文本密碼直接導入臨時字段中的Java數據庫 - 當然特定於用戶 - 然后告訴PHP觸發Java函數來讀取該列,哈希,更新正確的列並刪除溫度場。

如果操作正確,您可以將漏洞的時間范圍限制在幾毫秒。

加密就是這樣。

  • 加密連接:HTTPS的同義詞。 如果您的服務器支持,請使用HTTPS將數據傳遞給phpbb。
  • 加密數據:加密密碼並以某種方式存儲密鑰(非常不安全),或使用非對稱加密。 有關如何通過安全通道發送密碼的詳細信息,請參閱我的問題的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM