gpt4 book ai didi

php - 基于用户输入创建 mysqli 连接时是否必须净化提交表单数据?

转载 作者:行者123 更新时间:2023-11-30 23:03:08 26 4
gpt4 key购买 nike

我正在尝试为我的客户端编写一个 php 安装程序来安装我的 php 程序。我的意思是,我的客户端可以运行 domain.com/myscript/install/index.php,输入数据库名称、密码主机名等,提交表单后,我的安装程序脚本将连接到 mySQL 数据库(基于用户的输入), 然后创建一些表等。

即。

$mysqli = new mysqli($_POST['hostname'],$_POST['username'],$_POST['password'],$_POST['port']);

所以,我想知道在这种情况下,是否有必要净化 $_POST?

最佳答案

无论如何,始终清理用户输入。此时您不需要 mysqli_real_escape_string,该函数仅转义某些字符以安全插入到表中。绝对不是你现在需要的。使用 PHP's built-in filter functions .

<?php

$sanitize_string = array(
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_SCALAR | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH,
);

$user_input = filter_input_array(
INPUT_POST,
'hostname' => $sanitize_string, // You could also use the IP one, check for persistent, ...
'username' => $sanitize_string,
'password' => FILTER_UNSAFE_RAW, // It's going to be hashed, who cares!
'port' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
'options' => array('min_range' => 666, 'max_range' => 3600),
),
true
);

foreach ($user_input as $input) {
if (!$input) { // Either NULL or FALSE, we don't care!
trigger_error("No no my dear!", E_USER_ERROR);
}
}

list($host, $user, $pass, $port) = $user_input;
$mysqli = new \mysqli($host, $user, $pass, $port);

?>

关于php - 基于用户输入创建 mysqli 连接时是否必须净化提交表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23069304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com