来消毒用户输入我们通常使用mysql_real_escape_string,但是例如,如果我想逃避:O'Brian它会返回O \'Brian而我真的不喜欢这个因为如果我想打印这个名字,我有剥离slasheseveryverytime。 所以我想用这个函数:
$search = array("'", '"');
$replace = array("´", "“");
$str_clean = str_replace($search, $replace, "O'Brian");
这个简单的功能是否可以保护我免受MySQL注入攻击? 非常感谢,抱歉我的英语不好。
答案 0 :(得分:3)
答案 1 :(得分:2)
mysql_real_escape_string确实仅为字符串转义添加\
,并且不会将它们添加到数据库中,因此您在显示内容时不必使用stripslashes。
如果您确实将\
存储在数据库中,请执行off
magic_quote
答案 2 :(得分:2)
您应始终使用mysql_real_escape_string
来逃避输入。当您将值写入数据库时,而不是当您从数据库中读取值时。当您将“O \'Brian”写入数据库时,它会被存储为“O'Brian”,当您将其读回时,您还应该获得“O'Brian”(并且不需要删除斜线,因为它们不存在)。
答案 3 :(得分:1)
是的,显然它可以防止SQL Injection
攻击
它会在unescaped_string
中转义特殊字符,并考虑到连接的当前字符集,以便将其放在mysql_query()
中是安全的。