预处理语句针对SQL注入黑白常有效的,由于参数值发送后运用差别的协定,保证了数据的合法性。预处理看做是想要运转的SQL的一种编译过的模板,它可以运用变量参数举行定制。 (引荐进修:PHP视频教程)
防备要领一
mysql_real_escape_string – 转义SQL 语句中运用的字符串中的特别字符,并考虑到衔接的当前字符集 !
$sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_real_escape_string($pw)."' limit 1";
要领二:
翻开magic_quotes_gpc来防备SQL注入。php.ini中有一个设置:magic_quotes_gpc =
Off这个默许是封闭的,假如它翻开后将自动把用户提交对sql的查询举行转换,比方把 ’ 转为 '等,关于防备sql打针有严重作用。
假如magic_quotes_gpc=Off,则运用addslashes()函数。
要领三:
自定义函数
function check_param($value=null) { #select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'; if(!$value) { exit('没有参数!'); }elseif(eregi($str, $value)) { exit('参数不法!'); } return true; } function str_check( $value ) { if(!get_magic_quotes_gpc()) { // 举行过滤 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); return $value; } function post_check($value) { if(!get_magic_quotes_gpc()) { // 举行过滤 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); $value = nl2br($value); $value = htmlspecialchars($value); return $value; }
以上就是php防sql注入道理的细致内容,更多请关注ki4网别的相干文章!