将php函数添加到所有POST和REQUEST变量

时间:2013-04-04 14:27:58

标签: php

由于MYSQL注入,我有一个非常老的客户现在遇到安全问题。此客户端没有足够的资金将PHP数据库功能更改为PDOMYSQLI。尽管如此,他还是建议他想要一个可以防止mysql被盗的功能。他完全清楚这个功能并不完美。但是,他现在没有任何其他临时方式。我为他写的函数叫做safe();。这是我的问题。如何将该功能应用于其网站中的所有POSTREQUEST。他的网站有很多文件,需要几个小时才能更改。我可以在每个文件的标题中添加任何可以将我的函数应用于所有POSTREQUEST变量的文件吗?

可能看起来像这样的东西:

$_POST[*] = safe($_POST[*]);

当然,上面的代码不起作用。但我希望你明白这一点。

4 个答案:

答案 0 :(得分:3)

您可以使用array_map,但我怀疑它是否是完美的解决方案:

$final = array_map( "mysql_real_escape_string", $_POST );

答案 1 :(得分:3)

最后$ _POST和$ _GET只是数组。 你可以做像

这样的foreach
foreach ($_POST as $key => $value) {
  safe($value);
} 

如果他们有旧的PHP服务器等。所以如果你有一个包含在整个网站上的一般文件,并且“正常”功能不是一个选项,这可能是备份计划。

答案 2 :(得分:3)

您正在描述臭名昭着的Magic Quotes,如果服务器早于PHP / 5.4.0(我认为是这种情况),它仍然可用。

请注意,它们会影响所有POST数据,包括不会在SQL查询中注入的数据。

如果您更喜欢safe()功能,则可以编写一个简单的脚本进行更改并通过auto_prepend_file进行调用。

答案 3 :(得分:2)

https://stackoverflow.com/questions/15664021/php-escaping-vars-posted-through-var-and-got-by-postvari-with-a-meth

可能重复

据我所知,没有通用的方法,但你可以通过预测$ _POST数组来试一试