gpt4 book ai didi

PHP magic_quotes_gpc 漏洞

转载 作者:可可西里 更新时间:2023-10-31 22:49:45 26 4
gpt4 key购买 nike

我被分配到我公司的一个遗留 Web 应用程序,在研究源代码一两天后,我发现了一个类似于以下内容的 SQL 注入(inject)向量:

mysql_query("SELECT * FROM foo WHERE bar='" . $_GET['baz'] . "'");

我已经尝试对此执行 SQL 注入(inject)测试,但由于 PHP 的 magic_quotes_gpc 模块被打开而失败了。

我知道 magic_quotes_gpc ,但我们有数百(如果不是数千)行代码与上面的代码类似。我们根本无法关闭 magic_quotes_gpc,因为这会让像这样的代码容易受到攻击。

我想知道上面的代码有多“可利用”,我们是应该立即修复它,还是将修复它的任务与我们的其他重构任务一起进行。

最佳答案

magic_quotes_gpc 转移网站的常用方法是添加包装函数:

function m($s) {
if (get_magic_quotes_gpc())
$s= stripslashes($s);
return mysql_real_escape_string($s);
}

mysql_query("SELECT * FROM foo WHERE bar='".m($_GET['baz'])."'");

这将解决 addslashes 无法识别字符集的问题,这会导致它在某些情况下容易受到攻击,并且通常会使代码像以前一样继续“工作”。

但是,从长远来看,依赖输入转义是不可持续的,因为它会将斜杠乘以您未插入数据库的输入字符串,并且无法转义您从其他来源插入数据库的字符串。这就是 magic_quotes_gpc 错误的真正原因:它将输出级编码应用于输入级。

因此添加包装函数,然后慢慢更新所有 SQL 插值以使用它。当您获得所有这些后,您可以关闭魔术引号。

关于PHP magic_quotes_gpc 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2127028/

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