我是PHP的新手。
我使用两种方法来转义字符串:
function htmlreplace($str, $useBR = false) {
$str2 = $str;
$str2 = preg_replace ( "/</", "<", $str2 );
$str2 = preg_replace ( "/>/", ">", $str2 );
$str2 = preg_replace ( "/(\r\n|\n|\r)/", $useBR ? "<br />" : " ", $str2 );
$str2 = preg_replace ( "/&/", "&", $str2 );
$str2 = preg_replace ( "/\'/", "'", $str2 );
return preg_replace ( "/\"/", """, $str2 );
}
$string='some string needs to insert into mysql';
stripslashes(htmlreplace($string));
function sanitizeString($var, $DBconnection) {
$var = strip_tags ( $var );
$var = htmlentities ( $var );
$var = stripslashes ( $var );
return $DBconnection->real_escape_string ( $var );
}
$string='some string needs to insert into mysql';
trim ( sanitizeString ($string) );
从 SQL Injection Prevention Cheat Sheet
显示这些字符需要转义
NUL, BS, 标签, 如果, CR, SUB, %, &#39 ;, \ _, ASCII值小于256的所有其他非字母数字字符
显示addslashes()函数将转义这些字符:单引号(&#39;),双引号(&#34;),反斜杠()和NUL(NULL字节)
据我所知,转义是为了防止SQL注入。
所以我很想知道有多少角色需要转义?这些是什么?它们都是Special Characters in HTML吗?
至于SQL注入防止,感谢Slico,Marc B和bub帮助。
谢谢!
答案 0 :(得分:1)
从OWASP看一下这个link:
主要防御:
选项#1:使用准备好的语句(参数化查询)
选项#2:使用存储过程
选项#3:转义所有用户提供的输入
额外防御: