在我知道如何保护上传图像绕过表单输入字段以上传不需要的文件后,我想给出另一个来自 2 个字段的示例,其中一个是隐藏的。
SQL 表(id,name,jod,number)
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`name` varchar(255) default '0',
`job` varchar(255) default NULL,
`number` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
表格代码(支持成员将编辑自己的信息)
<form action="send.php" method="post" name="send" id="send">
<input type="text" name="name" id="name" value="John"/>
<input type="text" name="job" id="job" value="Plumber"/>
<input type=hidden name="number" id="number" value="1234"/>
<input type="Submit" name="Submit" value="Submit"/>
</form>
后来有一个firefox扩展可以绕过不同的输入到服务器端绕过检查并且可能会造成很多损坏所以在这里它可以停止整个过程并使您能够将隐藏表的值编辑number
为任何value="1"
导致更新的值会员信息有value number 1
。
该扩展的工作原理如下,它可以在输入数据传递到服务器端之前伪造输入数据。
PHP 代码发送.php
if(isset($_POST['send'])){
$name = mysql_real_escape_string($_POST[name]);
$job = mysql_real_escape_string($_POST[job]);
$number = mysql_real_escape_string($_POST[number]);
$sql= "update users SET name='$name',job='$job' WHERE number='$number'";
mysql_query($sql) or die("query failed: $sql".mysql_error());
echo "Update Done";
} else {
echo "Nothing to update";
}
那么如何 保护这个简单的表单免受这种输入表单的影响?~ 谢谢
这个问题真的很痛苦,因为它使我的网站可以自由地被黑客入侵:)