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