2012-06-07 77 views
0

在PHP中存儲密碼最安全的方法是什麼?我非常感興趣的是在使用我的應用程序時保護我的用戶受到保護,並且我想用盡可能最好的方式來存儲他們的密碼。我已經閱讀了各種加密方法,如MD5,SHA1等。我還閱讀了「鹽」和哈希。有人可以告訴我以PHP最安全的方式存儲密碼嗎?在PHP中存儲密碼的最安全方法是什麼?

+1

SHA512和鹽 – zerkms

+2

又來了......我還沒有去查找重複的這一個。 「不建設性」。 – 2012-06-07 00:39:59

+1

使用預先存在的,經過良好測試的[密碼哈希庫](http://www.openwall.com/phpass/)。不要'滾自己的'。 – PenguinCoder

回答

0

在將數據存儲到數據庫中之前,請先將您的密碼加鹽。在任何情況下,您都不能以純文本格式存儲密碼。一旦散列後丟棄純密碼。

還使用會話變量來存儲和跟蹤用戶會話。不要使用cookies,因爲它們存儲在瀏覽器中,並且可能會妥協。

有一個很好的密碼策略。至少要確保每個密碼都有一個最小長度,不是一個詞典單詞,不是全部數字,並且是上部和中間混合數字的混合。等谷歌對象密碼策略會變成很多。

2

使用任何類型的散列存儲密碼不會保護您的系統,但它會阻止人們在系統遭到入侵時看到明文密碼。安全來自良好的監督和良好實踐。

Microsoft有這樣的見解:

許多Web應用程序使用 密碼機制對用戶進行身份驗證,用戶在HTML表單提供一個 用戶名和密碼。到 的議題和問題考慮在這裏包括:

  • 以明文在不安全 通道發送的用戶名和密碼?如果是這樣,攻擊者可以使用網絡監控軟件竊聽軟件來捕獲證書。這裏的對策是通過使用安全套接字層(SSL)來保護通信信道的 。
  • 如何存儲憑證?如果您以純文本形式存儲用戶名和 密碼,無論是在文件中還是在數據庫中,您都是 會招來麻煩。如果您的應用程序目錄配置不正確 ,攻擊者瀏覽該文件並下載其內容 或添加新的特權登錄帳戶?如果一個不滿的 管理員將您的數據庫用戶名和密碼拿走?
  • 如何驗證憑證?如果 的唯一目的是驗證用戶知道密碼值,則不需要存儲用戶密碼。 相反,您可以將散列值形式的驗證器存儲起來,並在登錄 過程中使用用戶提供的值重新計算散列值。爲了減輕字典攻擊針對 憑證存儲的威脅,請使用強密碼並將隨機產生的salt值與密碼哈希組合。
  • 初始登錄後如何識別經過身份驗證的用戶?某些形式的身份驗證 票證(例如身份驗證cookie)是必需的。 cookie如何保護?如果它通過不安全的通道發送,攻擊者可以捕獲cookie並使用它來訪問應用程序。被盜的 認證cookie是被盜的登錄。
+0

如果認證存儲受到危害,使用*適當的*散列技術(以及*合適的* salt *和* HMAC)將減輕**總帳戶損失**。如果假設是在店裏*不能*妥協那就不會比存儲明文更好,但*這種假設可能是危險的* ... – 2012-06-07 01:19:30

+0

@pst - 笑,編輯我的回答對一個封閉的問題 – afuzzyllama

+0

哈哈,確實。我編輯了我的評論爲一個封閉的問題;-) – 2012-06-07 01:22:36

相關問題