2013-04-26 66 views
0

好吧,我好像在工作中遇到了困境。 我已經有一個工作註冊頁面上的用戶可以註冊的地方,所有的字段在提交之前進行驗證,這個驗證是用確切的用戶輸入和測量密碼,用戶名等長度。客戶端側。驗證散列密碼的長度(註冊)php

但是,在表單最終提交之前,密碼被哈希,希望阻止人們嗅探密碼。所以服務器收到細節和哈希密碼。我的問題是,如果用戶更改JavaScript驗證,以允許更短的密碼我的PHP腳本將無法告訴。我不能允許用戶使用短於8個字符的密碼,但對散列密碼進行驗證幾乎是不可能的。

雖然如果用戶禁用了JavaScript,我可以驗證密碼,因爲它不會首先被散列,但是如果有人更改了JavaScript以使驗證客戶端無效,那麼我似乎注意到問題出在哪裏。無可否認,我可以使用加密和解密,但我覺得必須有一些我常常忽略的東西。

我真的沒有看到我發佈我的代碼的用法,但如果需要的話我會的。如果我對我的解釋不太清楚,或者我錯過了明顯而明顯的東西,我很抱歉。

+3

使用SSL。否則,任何使用Javascript進行散列,編碼,加密或其他任何嘗試都不值得。你已經指出了一些缺陷,所以盡你所能簡單地驗證輸入,並讓服務器負責真正的驗證。 – Ian 2013-04-26 19:51:54

回答

4

密碼應該散列在服務器端。否則,散列可以像純文本密碼一樣輕鬆地被嗅探和重放。不要忘記獨一無二的鹽。

對於運輸,您需要HTTPS。

+0

這實際上是一個很好的觀點,我完全採用了錯誤的方法。我想我只是不喜歡這個實現ssl的想法,謝謝。 – iyop45 2013-04-26 20:00:37

+1

@ user1,在沒有HTTPS的情況下,存在大多安全密碼交換的方法,但它們不驗證服務器,因此可能存在中間人攻擊。另請參閱:http://stackoverflow.com/questions/2336678/login-without-https-how-to-secure – Brad 2013-04-26 20:15:26