2015-09-05 51 views
-2

我正在動態驗證所有$_POST字段。問題是訪問者可以使用Inspect Element將名稱屬性更改爲其他任何內容,並提交表單並且驗證不會發生。就像,如果客戶端將名稱屬性從email更改爲隨機單詞,那麼對該字段不會進行驗證。我如何防止這一點。我把所有的一切後場雖然

<input type = "text" name = "email[0]"> 
<input type = "text" name = "aphabets[1]"> 
<input type = "text" name = "numbers[1]"> 

foreach ($_POST as $key => $value) { 
foreach($value as $k => $v){ 
if ($key[$i] === "email"){ 
email($v); 
} 
if ($key[$i] === "numbers"){ 
required($v); 
} 
} 
} 
function email($v){ 
//validate email 
} 
function required($v){ 
//validate email 
} 
+2

爲什麼不只是拒絕它,如果它是空的? – chris85

回答

1

你不能相信客戶端來告訴你什麼是驗證規則。這包括您發送給客戶的數據,並希望未修改的數據。

也就是說......

遊客可以使用檢查元素並提交表單,如果他們將名稱更改爲東西驗證不會發生

更改名稱屬性其他任何你不期待處理,那麼處理它就沒有任何意義。

必須讓所有的一切後場動態雖然

爲什麼你必須得到所有領域?

如果字段名稱與您期望的模式不匹配,那麼以及不知道如何驗證它,您不知道該如何處理它。

這是不是你寫了一個表格要求的領域。你爲什麼要接受它?

這是無效的輸入到您的系統。忽略它或將錯誤返回給瀏覽器。

+0

但它有可能嗎? – Manu

+0

不可以。爲了可能,您必須信任來自客戶端的數據,而您不需要。 – Quentin

-2

動態地使用可以使用jQuery,jQuery驗證插件等等..

+0

這會使*更容易受到用戶干擾,而不是更少。 – Quentin