用户可以在浏览器开发工具中操纵选择框值

时间:2015-09-06 07:58:24

标签: php jquery html security

假设我有一个带有选择框的表单。我只是想知道用户是否可以在浏览器中操作web开发工具中的选择框的值,以及这些被操纵的值是否会以用户操作的值发送。

示例

默认选择框值

enter image description here

篡改选择框值

enter image description here

在上面的选项中,提交表单时会发送被篡改的(突出显示的)值吗?

2 个答案:

答案 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)

是的,它会。

您永远不应该直接信任客户输入并始终验证它。