-1

首先,我了解 magic_quotes 会导致各种问题,在现代 PHP 中没有位置。我处于一个非常特殊的情况,我已将 XAMPP 从 PHP 5 升级到 PHP 7.4,用于包含 5000 多个文件的 Intranet 站点。突然,当用户生成的字符串中包含单引号或双引号时,各种 SQL INSERT 查询都会中断。对我来说,用 add_slashes 函数遍历并包装这 5000 个文件中的每个变量是不可行的,所以我需要想出一些方法来全局应用与 magic_quotes 相同的逻辑。有什么建议么?

4

1 回答 1

0

您确实需要更新此应用程序如何防止 PHP 中的 SQL 注入?. 但是,我很确定这不会发生。因此,在任何数据库操作之前包含的头文件或头文件中(可能是auto_prepend_file),只需将超全局变量映射到addslashes. $_COOKIE如果需要,您可以添加:

$_POST = array_map('addslashes', $_POST);
$_GET  = array_map('addslashes', $_GET);

显然这不会处理多维数组,所以你必须使用递归函数:

function addslashes_recursive($v) {
    $v = is_array($v) ? array_map('addslashes_recursive', $v) : addslashes($v);    
    return $v;
}

$_POST = addslashes_recursive($_POST);
$_GET  = addslashes_recursive($_GET);
于 2021-06-01T15:41:47.183 回答