2013-06-21 26 views
0

我的問題是關於被接收的形式HTML表單和是靜態的一個用戶輸入(通過「靜態」 - 我的意思是從喜歡的東西選擇選項,單選按鈕信息,複選框)。我應該做一個客戶端驗證,因爲我假設用戶可以用像螢火蟲這樣的工具來更改我的html代碼。有沒有從HTML表單的客戶端驗證靜態信息的一點?

例子:

我的代碼:

<select> 
<option>public</option> 
<option style="display:none">private</option> 
</select> 

用戶修改:

<select> 
<option>public</option> 
<option selected >private</option> 
</select> 

我應該驗證此輸入JS或離開它的服務器端驗證? 我知道用戶可以操縱JS,所以我看不出在JS中做這種驗證的意義。

我的邏輯:

  1. 由於這是一個靜態的信息一般(好人),用戶將不惹它,爲此沒有必要去檢查一下。

  2. 如果一個邪惡的用戶想要弄亂我的代碼,他可能會知道如何混合HTML代碼和JS代碼,所以再次 - 不需要對靜態輸入進行客戶端驗證。

所以,我是對的,或者應該始終在客戶端有全面的驗證幽靈。

PS:我只要求在客戶端,我常/以及所有的用戶輸入的服務器端驗證/

+1

唐'worry.Even如果客戶端編輯的東西,它只會在他/她的本地計算機和簡單的重裝將再次帶回原來的HTML輸出改變。客戶端無法在服務器上進行更改(在上下文中您正在討論的內容)。 不要擔心。跟你一起開展Project.Fearlessly。 閱讀一些關於客戶端和服務器端編程語言的好書。 使用JavaScript和Ajax與一些PHP來驗證您的代碼! –

+0

感謝@MESSIAH這是我需要的精神:) – Alordiel

+0

像往常一樣,請記住客戶端驗證的「完整性檢查」 - 如果禁用JavaScript的用戶違反了您的安全模型,那麼您的安全模型將被破壞:) –

回答

3

始終驗證您輸入服務器端。

這是不錯驗證的東西在JavaScript中,因爲你可以告訴用戶月初輸入不正確。

一個聰明的用戶可以繞過你的地方,因爲你總是可以使自己的請求任何JavaScript約束。


從時間效率的角度來看。這是不值得花費大量時間試圖幫助邪惡用戶通過總是試圖給一個有用的錯誤消息。如果服務器認爲輸入無效,則可以用"invalid input"進行回覆。如果你的JavaScript驗證是足夠好一個普通用戶不應該遇到那個錯誤。