我的客户端在其生产服务器上有大量代码,现在我们正在保护此服务器。 他们有SQL漏洞有代码,所以我们正在添加 这些命令在代码的开头。这是否会暂时解决问题。
$_POST = array_map('mysql_real_escape_string', $_POST);
$_GET = array_map('mysql_real_escape_string', $_GET);
$_REQUEST = array_map('mysql_real_escape_string', $_REQUEST);
答案 0 :(得分:4)
我们无法判断这是否解决了这个问题,因为我们看不到应用程序代码是如何使用 $_GET
,$_POST
和{ {1}}变量。它实际上可能会破坏请求变量的其他用途,迫使它们全部转义。
$_REQUEST
语句或关联数组键等。基本上,你正在尝试做与魔术引号相同的事情,但magic quotes was deprecated因为拥有一个通用的安全解决方案是一个坏主意。这只是基于太多的假设,结果证明不是真的。
正确的解决方案(如果你现在必须坚持使用ext / mysql)是在SQL 中使用它们时应用过滤或转义来请求变量。
当然最好升级到ext / mysqli或PDO,并使用查询参数。但是我意识到要将大型代码库调整为新的API需要做很多工作,而且您正在寻找短期内可以做的事情。
您还可以查看mod_security,它可以帮助您过滤掉可疑的请求变量模式,而无需更改任何PHP代码。但是,设计适用于您的应用的mod_security规则也可以做很多工作,而不会阻止合法请求。