由于MYSQL
注入,我有一个非常老的客户现在遇到安全问题。此客户端没有足够的资金将PHP数据库功能更改为PDO
或MYSQLI
。尽管如此,他还是建议他想要一个可以防止mysql被盗的功能。他完全清楚这个功能并不完美。但是,他现在没有任何其他临时方式。我为他写的函数叫做safe();
。这是我的问题。如何将该功能应用于其网站中的所有POST
和REQUEST
。他的网站有很多文件,需要几个小时才能更改。我可以在每个文件的标题中添加任何可以将我的函数应用于所有POST
和REQUEST
变量的文件吗?
可能看起来像这样的东西:
$_POST[*] = safe($_POST[*]);
当然,上面的代码不起作用。但我希望你明白这一点。
答案 0 :(得分:3)
您可以使用array_map
,但我怀疑它是否是完美的解决方案:
$final = array_map( "mysql_real_escape_string", $_POST );
答案 1 :(得分:3)
最后$ _POST和$ _GET只是数组。 你可以做像
这样的foreachforeach ($_POST as $key => $value) {
safe($value);
}
如果他们有旧的PHP服务器等。所以如果你有一个包含在整个网站上的一般文件,并且“正常”功能不是一个选项,这可能是备份计划。
答案 2 :(得分:3)
您正在描述臭名昭着的Magic Quotes,如果服务器早于PHP / 5.4.0(我认为是这种情况),它仍然可用。
请注意,它们会影响所有POST数据,包括不会在SQL查询中注入的数据。
如果您更喜欢safe()
功能,则可以编写一个简单的脚本进行更改并通过auto_prepend_file进行调用。
答案 3 :(得分:2)
据我所知,没有通用的方法,但你可以通过预测$ _POST数组来试一试