2012-04-17 94 views
0

我想驗證用戶在表單中輸入的數據。我只有一個用戶名和兩個密碼字段。我的第一個問題是,我用JavaScript檢查數據,它工作正常,但我想檢查數據與PHP太incase JavaScript無法正常工作。如果JavaScript不工作,將從php代碼檢查數據,但我的問題是,如果JavaScript正在工作,那麼數據將被檢查從JavaScript和PHP了。這很好嗎?有沒有什麼辦法可以避免使用php檢查輸入數據是通過javascript檢查?此外,我正在檢查輸入(用戶名和密碼)的字符數,爲字符(我不允許特殊字符,只有「_」,「。」數字和字母,以避免SQL注入) - 它是如何聲音給你?你有任何其他建議更好的驗證?在php中驗證輸入數據 - javascript

預先感謝您。

+2

你應該經常檢查在PHP端,因爲JavaScript是不安全的。 – 2012-04-17 21:36:03

回答

2

您應該總是做userinput的服務器端(php)驗證。客戶端(javascript)驗證僅對更好的用戶體驗有好處。此外,你不應該限制輸入到一些字符爲防止mysql注入,還有其他可靠的方法。

+0

謝謝你的回答! :)我正在使用這個函數mysql_real_escape_string()進行sql注入。但是限制輸入中的一些字符不會更好嗎?我認爲有數字,字母和「_」,「」的密碼。也許一些更特殊的角色可能足夠安全。 – anna 2012-04-17 21:46:54

+0

mysql_real_escape_string()是防止mysql注入的好開始,不需要限制用戶輸入。但總有人可以繞過這一點,但一開始它應該持續下去。 – 2012-04-17 21:52:52

+0

我想限制用戶的輸入,因爲你說了什麼。如果我只使用mysql_real_escape_string()函數,這可能還不夠。如果我有一個防止sql注入的解決方案,這將是一件好事,這就是爲什麼我決定限制輸入。 – anna 2012-04-17 22:04:21

1

檢查雙方是好的,絕對推薦。如果您希望避免使用PHP進行檢查(如果啓用了Javascript),則可以在表單中追加隱藏字段並使用PHP檢查此內容。

E.G.

if(!isset($_POST['js_hidden_field'])) { 

    // Run Validation 

} 

所以,你檢查的隱藏字段,如果它沒有設置,運行PHP驗證

+0

由於建議我會在兩者中進行檢查(正如你所有的建議),但感謝你的解決方案。 :) – anna 2012-04-17 21:43:47

+0

我的榮幸! :) – 2012-04-17 21:45:03

2

是的,你應該同時驗證客戶端(JS)和服務器端(PHP)。

爲了方便用戶和改善用戶體驗,在客戶端上這樣做。

在服務器上這樣做以防止惡意攻擊,或者如您所述,在您的用戶禁用JS的情況下。

2

您應該始終執行服務器端驗證。不能保證客戶端驗證(如JavaScript驗證)不能被破壞。這是一個簡單的練習來抓住一個調試工具(現在有許多內置在瀏覽器中)並繞過javascript驗證。

通常沒有什麼不對,甚至建議在Javascript和PHP這兩個地方進行驗證。

1

這實際上是好的,我認爲你永遠不會做太多的驗證。任何具有Web開發經驗的人都可以操縱客戶端腳本,但服務器端腳本不能。

客戶端腳本驗證優點:

  • 通知提交數據,允許他們改正自己
  • 使您的網站看起來更加複雜

服務器端驗證利弊之前用戶:

  • 沒有人可以更改您的任何驗證規則
  • 他們無法關閉服務器端驗證。

簡而言之,兩者都很好,它實際上比只做一個或另一個好。