2011-03-26 72 views
1

我有具有以下密碼輸入控件的註冊頁面:密碼那麼MySQL

<input type="password" /> 

什麼是這個密碼發送到服務器,然後將其保存到一個數據庫的最佳方式以後比較時登錄?

+0

我做了一個快速搜索,發現沒有任何明顯的從前幾個結果,它顯示瞭如何不以文本形式從客戶端發送密碼到服務器。我剛剛看到有關https的一些信息,但目前這不是一種選擇。如果它讓你快樂,請隨時投票。但個人而言,我認爲你沒有正確閱讀我的問題。如果我們能夠反對投票評論,我不會再三思考你的評論。所以,請不要阻止倒票。 ;) – oshirowanen 2011-03-26 13:59:08

+0

有沒有好的方法發送密碼到服務器,你必須散列和存儲散列! – Adrian 2011-03-26 14:24:09

+0

如果沒有「輸入」元素的「名稱」屬性,則不會發送任何內容。 – 2011-03-26 14:44:25

回答

3

最好的辦法是使用HTTPS。 HTTPS可保護客戶端到服務器的流量,並專門爲此設計。你不需要在這個級別編碼任何東西。 @Adrian鏈接帖子是關於密碼存儲在數據庫中,你會得到有用的信息。只記得不要直接保存密碼,保存哈希或者加密版本。

+0

是https的唯一方法安全地將密碼從客戶端發送到服務器? – oshirowanen 2011-03-26 14:01:44

+0

另一種方式是不發送它們。使用oauth或openid或其他不涉及密碼的身份驗證系統。 – 2011-03-26 17:31:29

0

正如@Elzo所建議的,在涉及密碼和隱私數據時必須使用HTTPS。 HTTPS對於網絡數據傳輸非常有用。現在,關於密碼存儲安全...密碼必須使用單向散列算法(如md5)保存(您可以在php中使用md5()函數)。不要在數據庫中存儲乾淨的密碼。然後,當用戶登錄時,服務器端腳本將收到密碼,它將檢查用戶通過html表單發送的md5(「userpasswordinput」)與存儲在db表中的值之間的對應關係(以前編碼爲MD5)。