假设我有一个带有选择框的表单。我只是想知道用户是否可以在浏览器中操作web开发工具中的选择框的值,以及这些被操纵的值是否会以用户操作的值发送。
示例
默认选择框值
篡改选择框值
在上面的选项中,提交表单时会发送被篡改的(突出显示的)值吗?
答案 0 :(得分:2)
是的,它可以!永远不要相信客户端提供的任何输入 - 而不仅仅是选择框。
最好验证所有输入是否存在且有效。
这可以在PHP中完成:
$validInputs = ['1', '2', '3', '4', '5', '...'];
$tamperedInput = false;
if (!isset($_POST['score[0]'])) {
$tamperedInput = true;
} else {
$input = $_POST['score[0]'];
if (!in_array($input, $validInputs)) {
$tamperedInput = true;
}
}
if ($tamperedInput) {
echo "TAMPERED INPUT";
} else {
echo "VALID INPUT";
}
在这种情况下,您的所有输入都是数字,您可以使代码更简单:
$tamperedInput = false;
if (!isset($_POST['score[0]'])) {
$tamperedInput = true;
} else {
$input = $_POST['score[0]'];
if (!is_numeric($input)) {
$tamperedInput = true;
} else {
$number = intval($input);
if (!($number >= 1 && $number <= 10)) {
$tamperedInput = true;
}
}
}
您还需要记住其他恶意技术,例如SQL Injection。
阅读此内容以获取更多信息: http://www.w3schools.com/php/php_form_validation.asp
答案 1 :(得分:1)
是的,它会。
您永远不应该直接信任客户输入并始终验证它。