【发布时间】:2014-04-25 07:24:30
【问题描述】:
如果我在下面有这个简单的表单选择器:
<form id="myform" class="form" role="form" accept-charset="utf-8" method="post" action="/mypage.php">
<select id="gender" name="gender">
<option selected="" value=""></option>
<option value="man">man</option>
<option value="women">women</option>
</select>
<button type="submit" name="insert"> Send </button>
</form>
还有这个用于检索数据的小 php 代码:
if (isset($_POST['insert'])) {
if(!isset($_POST['gender']) || strlen($_POST['gender'])<3)
{
header('location:'.$_SERVER['PHP_SELF'].'?error');
exit;
}
$gender = ($_POST['gender']);
...
// INSERT INTO DATABASE
}
现在有人使用 Firebug 将选项值从“man”修改为“vulnerability”并单击提交,这个新值将被插入到我的数据库中,而不是之前的。
我的问题是:如何使用 php 语言防止这种情况发生?
谢谢。
【问题讨论】:
-
你会清理你的输入。看看这个:stackoverflow.com/questions/1637275/…
-
可能是我需要“简单的 if-else 逻辑检查”来匹配唯一可能的两个值选项?
-
不,它与转义放入选择框中的某些值有关。看看@The-Doctor 在下面发布的内容。
-
这对你有很大帮助:stackoverflow.com/questions/129677/…
标签: php html forms security selector