2016-11-23 80 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检查的例子。你可以用很多方式检查你收到你需要的东西。 –