2011-05-28 125 views
3

可能重复:
PHP: the ultimate clean/secure function这段代码实际上是否可以用于SQL注入?

我发现这个代码片段在这里:http://snipplr.com/view/12853/clean-variables-from-sql-injections/

笔者主张:

这个小功能可以帮助对抗常见安全问题与SQL注入,它可以消毒任何像$ POST,$ GET,$ _SERVER等全局变量并转义不安全的字符。

enter image description here此代码是否安全?

function _clean($str){ 
    return is_array($str) ? array_map('_clean', $str) : str_replace("\\", "\\\\" 
     , htmlspecialchars((get_magic_quotes_gpc() ? stripslashes($str) : $str) 
     , ENT_QUOTES)); 
} 

//usage call it somewhere in beginning of your script 
_clean($_POST); 
_clean($_GET); 
_clean($_REQUEST);// and so on.. 

请告诉我这是否是安全的,“因为它看起来陪审团操纵我。

+0

这是不安全的。 - – 2011-05-28 22:07:36

+0

@Alix,我99%肯定 – Johan 2011-05-28 22:09:00

+0

99%确定它是borken,即:-) – Johan 2011-05-29 20:25:28

回答

4

通用代码清理功能总是一个坏主意。他们会以某种方式破坏您的数据。切勿使用它们;在数据使用之前对数据进行清理,使用正确的卫生方法进行预期的使用。

重复:PHP: the ultimate clean/secure function

0

只需使用mysql_real_escape_string如果需要特殊字符转义为MySQL数据库。我想其他数据库也支持类似的功能。

这种剪切尝试了一些愚蠢的替换,可能相当安全,但也可能会混淆你的数据。为什么重新发明轮子?

0

为什么不使用数据库的内置转义/参数化功能?我同意它看起来像是陪审员一样,随着制作数据库库的人建立起来的功能。

0

这不安全(不存在addslashesmysql_real_escape_string),性能也不是最佳(每个变量都要求调用get_magic_quotes_gpc)。

相关问题