yidas / magic-quotes-gpc

在PHP 5.4及更高版本上实现 legacy 代码的 magic_quotes_gpc

1.1.0 2018-03-24 07:29 UTC

This package is auto-updated.

Last update: 2024-09-10 21:04:52 UTC


README

在PHP 5.4及更高版本的后续版本上实现 legacy 代码的 magic_quotes_gpc

Latest Stable Version Latest Unstable Version License

如果您正在将 legacy 源代码迁移到 PHP 版本 5.4 及以上版本的环境,但包含许多依赖于 Magic Quotes magic_quotes_gpc SQL 保护的有漏洞的数据库查询代码。只需使用这个来在新版本的 PHP 上顺畅运行,就像过去一样。

关于 PHP 的警告Magic Quotes

自 PHP 5.3.0 起已弃用 Magic Quotes 功能,自 PHP 5.4.0 起已移除。

演示

print_r($_GET);
MagicQuotesGpc::init();
print_r($_GET);

在访问包含查询 ?username=1' OR '1'='1 的 URL 后,输出将是

Array ( [username] => 1' OR '1'='1 ) 
Array ( [username] => 1\' OR \'1\'=\'1 )

递归输入数据关注

将处理来自 $_POST$_COOKIE 以及 $_GET 的递归数据输入

$_POST['users'][0] = ['username'=>"1' OR '1'='1"];
print_r($_POST);
MagicQuotesGpc::init();
print_r($_POST);

在模拟 $_POST 数据分配后,输出将是

Array ( [users] => Array ( [0] => Array ( [username] => 1' OR '1'='1 ) ) ) 
Array ( [users] => Array ( [0] => Array ( [username] => 1\' OR \'1\'=\'1 ) ) )

安装

通过 Composer 安装

在您的 legacy 项目中运行 Composer

composer require yidas/magic-quotes

然后在应用的引导(如 config 文件)中初始化它

require __DIR__ . '/vendor/autoload.php';
MagicQuotesGpc::init();

通过加载类直接安装

加载 MagicQuotesGpc.php 并初始化它

require __DIR__ . '/MagicQuotesGpc.php';
MagicQuotesGpc::init();