旗下导航:搜·么
当前位置:网站首页 > PHP问题 > 正文

php防sql注入道理【php题目】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP问题浏览:136


导读:sql注入:就是通过把SQL敕令插进去到Web表单递交或输入域名或页面要求的查询字符串,终究到达诳骗服务器实行歹意的SQL敕令。预处理语句针对SQL注入黑白常有效的,由...
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注入道理的细致内容,更多请关注ki4网别的相干文章!

标签:php