Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户可以在浏览器开发工具中操纵“选择框”值吗_Php_Jquery_Html_Security - Fatal编程技术网

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

Php 用户可以在浏览器开发工具中操纵“选择框”值吗,php,jquery,html,security,Php,Jquery,Html,Security,假设我有一个带有选择框的表单。我只是想知道用户是否可以在浏览器中操作WebdevTools中selectbox的值,以及这些被操作的值是否会作为用户操作的值发送 示例 默认选择框值 篡改的选择框值 在上面的选项中,提交表单时是否会发送被篡改(突出显示)的值?是的,会 您永远不应该直接信任客户端输入并始终验证它。是的,它可以!永远不要相信客户端提供的任何输入,而不仅仅是选择框 最好验证所有输入是否存在且有效 这可以在PHP中完成,如下所示: $validInputs = ['1', '2',

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

示例

默认选择框值

篡改的选择框值

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

是的,会


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

是的,它可以!永远不要相信客户端提供的任何输入,而不仅仅是选择框

最好验证所有输入是否存在且有效

这可以在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;
        }
    }
}
$tamperedInput=false;
如果(!isset($_POST['score[0]')){
$tamperedInput=true;
}否则{
$input=$_POST['score[0]'];
如果(!是数值($input)){
$tamperedInput=true;
}否则{
$number=intval($input);

如果(!($number>=1&&$number是的。这就是为什么应该始终使用严格的表单验证。并确保使用最新的编码技术。例如:pdo_mysql vs msqli或不推荐使用的mysql。