最全防止sql注入方法

(1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 
 
使用方法如下:
 
?
1
2
3
$sql = "select count (*) as ctr from users where username
= '".mysql_real_escape_string($username)."' and
password= '". mysql_real_escape_string($pw)."' limit 1";

 

 
 
 
使用 
mysql_real_escape_string()
 作为用户输入的包装器,就可以避免用户输入中的任何恶意 SQL 注入。
 
(2) 打开magic_quotes_gpc来防止SQL注入
 
php.ini中有一个设置:magic_quotes_gpc = Off
  这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,
  比如把 ' 转为 \'等,对于防止sql注射有重大作用。
 
     如果magic_quotes_gpc=Off,则使用addslashes()函数
 
(3)自定义函数
 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function inject_check( $sql_str ) {
     return eregi ( 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile' , $sql_str );
}
 
function verify_id( $id =null) {
     if (! $id ) {
         exit ( '没有提交参数!' );
     } elseif (inject_check( $id )) {
         exit ( '提交的参数非法!' );
     } elseif (! is_numeric ( $id )) {
         exit ( '提交的参数非法!' );
     }
     $id = intval ( $id );
      
     return $id ;
}
 
 
function str_check( $str ) {
     if (!get_magic_quotes_gpc()) {
         $str = addslashes ( $str ); // 进行过滤
     }
     $str = str_replace ( "_" , "\_" , $str );
     $str = str_replace ( "%" , "\%" , $str );
      
    return $str ;
}
 
 
function post_check( $post ) {
     if (!get_magic_quotes_gpc()) {
         $post = addslashes ( $post );
     }
     $post = str_replace ( "_" , "\_" , $post );
     $post = str_replace ( "%" , "\%" , $post );
     $post = nl2br ( $post );
     $post = htmlspecialchars( $post );
      
     return $post ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值