我在此处找到了此代码段:http://snipplr.com/view/12853/clean-variables-from-sql-injections/
作者声称:
这个小函数有助于解决SQL注入的常见安全问题,它可以清理任何全局变量,如$ POST,$ GET,$ _SERVER等,并转义不安全的字符。
此代码是否安全?
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 :(得分:4)
通用代码清理功能总是一个坏主意。它们会以某种方式破坏您的数据。永远不要使用它们在使用之前对数据进行消毒,并使用正确的卫生方法进行预期用途。
答案 1 :(得分:0)
如果需要转义mysql数据库的特殊字符,请使用mysql_real_escape_string
。我认为其他数据库也支持类似的功能。
这个剪辑尝试了一些愚蠢的替换,可能非常安全,但也可能同样搞乱你的数据。为什么重新发明轮子?
答案 2 :(得分:0)
为什么不直接使用数据库的内置转义/参数化功能?我同意它看起来像陪审团,使用由制作数据库库的人建立的功能。
答案 3 :(得分:0)
这不安全(没有addslashes
或mysql_real_escape_string
),性能也不是最佳的(每个变量都会调用get_magic_quotes_gpc
)。