php防sql注入原理-PHP问题

资源魔 40 0
sql注入:就是经过把SQL饬令拔出到Web表单递交或输出域名或页面申请的查问字符串,终极达到诈骗效劳器执行歹意的SQL饬令。

预解决语句针对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注入原理的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!