2016-11-23 76 views
-2

正如你可能知道的那樣,你可以在Chrome中使用Inspect element來修改你正在查看的網頁,並且可能會搞亂radio值(或類似),你不打算改變,required輸入等等。如何防止客戶更改關鍵的HTML輸入?

例如:

<input type='radio' name='example' id='abcd' value='abcd'> 
<input type='radio' name='example' id='efgh' value='efgh'> 
<input type='text' name='username' id='username' required> 

可改爲

<input type='radio' name='example' id='OTHER_ID' value='OTHER_VALUE'> 
<input type='radio' name='example' id='OTHER_ID2' value='OTHER_VALUE2'> 
<input type='text' name='username' id='username'> 

我如何避免這種情況?

回答

1

您不能阻止用戶在您的html中使用Inspect element進行更改。

如果用戶這樣做,並且由於這種變化,您的網站上無法正常工作,我認爲這不是您的問題。

你應該做的是做服務器端檢查,因爲在服務器上只有你有權訪問,所以沒有人會在那裏弄亂你的代碼。

對於此示例,如果您收到username,則需要檢查服務器。如果不返回錯誤,並且不保存數據庫中的任何內容。 或檢查收到的收音機值是否被您接受,並檢查您是否收到了所需的所有按鍵。與其他領域一樣,請確保您在服務器端進行所有檢查,而不僅僅是客戶端。

一些代碼:

<?php 

//Check if you receive a username 
if(empty($_POST['username'])) { 
    echo 'Username is empty'; exit; 
} 

//Check that the radio values are accepted. 
if(!in_array($_POST['example'], ['abcd', 'efgh'])){ 
    echo 'Example radio has some bad values'; exit; 
} 

您需要調整代碼取決於什麼是強制性的,什麼是不爲用戶添加和在那裏他們可以輸入任何內容或某些特定的類型。

+0

所以你說我應該驗證一切,例如,isset()? – sgrontflix

+0

是的,你不能依靠前端,這就是爲什麼你需要始終在後端驗證。 –

+0

@sgrontflix添加一些PHP檢查的例子。你可以用很多方式檢查你收到你需要的東西。 –