PHP防SQL注入漏洞过滤函数


PHP #sql注入 #函数2012-04-19 21:11

PHP整站防SQL注入程序,需要在公共文件中require_once本文件。

01<?php
02//PHP整站防注入程序,需要在公共文件中require_once本文件
03//判断magic_quotes_gpc状态
04if (@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);
11function 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//整型过滤函数
27function 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//字符过滤函数
44function str_check($str) {
45    if (inject_check($str)) {
46        die('非法参数');
47    }
48    //注入判断
49    $str = htmlspecialchars($str);
50    //转换html
51    return $str;
52}
53 
54function 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//表单过滤函数
65function 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//防注入函数
75function inject_check($sql_str) {
76    return eregi('select|inert|update|delete|'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str);
77    // yige.org 进行过滤,防注入
78}
79 
80function 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?>


相关文章

粤ICP备11097351号-1