PHP防SQL注入漏洞过滤函数
PHP #sql注入 #函数2012-04-19 21:11
PHP整站防SQL注入程序,需要在公共文件中require_once本文件。
01 | <?php |
02 | //PHP整站防注入程序,需要在公共文件中require_once本文件 |
03 | //判断magic_quotes_gpc状态 |
04 | if (@get_magic_quotes_gpc()) { |
05 | $_GET = sec( $_GET ); |
06 | $_POST = sec( $_POST ); |
07 | $_COOKIE = sec( $_COOKIE ); |
08 | $_FILES = sec( $_FILES ); |
09 | } |
10 | $_SERVER = sec( $_SERVER ); |
11 | function sec(& $array ) { |
12 | //如果是数组,遍历数组,递归调用 |
13 | if ( is_array ( $array )) { |
14 | foreach ( $array as $k => $v ) { |
15 | $array [ $k ] = sec( $v ); |
16 | } |
17 | } else if ( is_string ( $array )) { |
18 | //使用addslashes函数来处理 |
19 | $array = addslashes ( $array ); |
20 | } else if ( is_numeric ( $array )) { |
21 | $array = intval ( $array ); |
22 | } |
23 | return $array ; |
24 | } |
25 |
26 | //整型过滤函数 |
27 | function num_check( $id ) { |
28 | if (! $id ) { |
29 | die ( '参数不能为空!' ); |
30 | } //是否为空的判断 |
31 | else if (inject_check( $id )) { |
32 | die ( '非法参数' ); |
33 | } //注入判断 |
34 | else if (!is_numetic( $id )) { |
35 | die ( '非法参数' ); |
36 | } |
37 | //数字判断 |
38 | $id = intval ( $id ); |
39 | //整型化 |
40 | return $id ; |
41 | } |
42 |
43 | //字符过滤函数 |
44 | function str_check( $str ) { |
45 | if (inject_check( $str )) { |
46 | die ( '非法参数' ); |
47 | } |
48 | //注入判断 |
49 | $str = htmlspecialchars( $str ); |
50 | //转换html |
51 | return $str ; |
52 | } |
53 |
54 | function search_check( $str ) { |
55 | $str = str_replace ( "_" , "\_" , $str ); |
56 | //把"_"过滤掉 |
57 | $str = str_replace ( "%" , "\%" , $str ); |
58 | //把"%"过滤掉 |
59 | $str = htmlspecialchars( $str ); |
60 | //转换html |
61 | return $str ; |
62 | } |
63 |
64 | //表单过滤函数 |
65 | function post_check( $str , $min , $max ) { |
66 | if (isset( $min ) && strlen ( $str ) < $min ) { |
67 | die ( '最少$min字节' ); |
68 | } else if (isset( $max ) && strlen ( $str ) > $max ) { |
69 | die ( '最多$max字节' ); |
70 | } |
71 | return stripslashes_array( $str ); |
72 | } |
73 |
74 | //防注入函数 |
75 | function inject_check( $sql_str ) { |
76 | return eregi ( 'select|inert|update|delete|' |\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str ); |
77 | // yige.org 进行过滤,防注入 |
78 | } |
79 |
80 | function stripslashes_array(& $array ) { |
81 | if ( is_array ( $array )) { |
82 | foreach ( $array as $k => $v ) { |
83 | $array [ $k ] = stripslashes_array( $v ); |
84 | } |
85 | } else if ( is_string ( $array )) { |
86 | $array = stripslashes ( $array ); |
87 | } |
88 | return $array ; |
89 | } |
90 | ?> |
相关文章
- php open_basedir用法 安全设置 2012/04/19
- PHP开发安全规则 2012/04/18
- PHP的可变变量名 2012/04/18
- php的闭合标签要不要写 2012/04/15
- PHP函数strrev()函数的用法 2012/04/15
- PHP 检测是否手机浏览器的函数 2012/04/15
- PHPExcel常用方法 2012/04/15
- PHP程序员使用MySQL常犯的错误 2012/04/15
- php实现多进程 2012/04/15
- php的异步请求操作 2012/04/15