English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> 好用的PHP防注入漏洞过滤函数

 

好用的PHP防注入漏洞过滤函数

威盾防火墙 2015-01-12

 
<?PHP
//PHP整站防注入程序,需要在公共文件中require_once本文件
//判断magic_quotes_gpc状态
if (@get_magic_quotes_gpc ()) {
        $_GET = sec ( $_GET );
        $_POST = sec ( $_POST );
        $_COOKIE = sec ( $_COOKIE );
        $_FILES = sec ( $_FILES );
}
$_SERVER = sec ( $_SERVER );
function sec(&$array) {
        //如果是数组,遍历数组,递归调用
        if (is_array ( $array )) {
                foreach ( $array as $k => $v ) {
                        $array [$k] = sec ( $v );
                }
        } else if (is_string ( $array )) {
                //使用addslashes函数来处理
                $array = addslashes ( $array );
        } else if (is_numeric ( $array )) {
                $array = intval ( $array );
        }
        return $array;
}
//整型过滤函数
function num_check($id) {
        if (! $id) {
                die ( '参数不能为空!' );
        } //是否为空的判断
        else if (inject_check ( $id )) {
                die ( '非法参数' );
        } //注入判断
        else if (! is_numetic ( $id )) {
                die ( '非法参数' );
        }
        //数字判断
        $id = intval ( $id );
        //整型化
        return $id;
}
//字符过滤函数
function str_check($str) {
        if (inject_check ( $str )) {
                die ( '非法参数' );
        }
        //注入判断
        $str = htmlspecialchars ( $str );
        //转换html
        return $str;
}
function search_check($str) {
        $str = str_replace ( "_", "\_", $str );
        //把"_"过滤掉
        $str = str_replace ( "%", "\%", $str );
        //把"%"过滤掉
        $str = htmlspecialchars ( $str );
        //转换html
        return $str;
}
//表单过滤函数
function post_check($str, $min, $max) {
        if (isset ( $min ) && strlen ( $str ) < $min) {
                die ( '最少$min字节' );
        } else if (isset ( $max ) && strlen ( $str ) > $max) {
                die ( '最多$max字节' );
        }
        return stripslashes_array ( $str );
}
//防注入函数
function inject_check($sql_str) {
        return eregi ( 'select|inert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str );
        // www.2cto.com 进行过滤,防注入
}
function stripslashes_array(&$array) {
        if (is_array ( $array )) {
                foreach ( $array as $k => $v ) {
                        $array [$k] = stripslashes_array ( $v );
                }
        } else if (is_string ( $array )) {
                $array = stripslashes ( $array );
        }
        return $array;
}
?>

相关内容: 最新内容:
SQL注入天书之ASP注入漏洞全接触[2015-01-09]
SQL注入漏洞多处+弱口令+任意密码重置[2015-01-08]
路由器漏洞:黑客展示如何攻陷百万台[2015-01-08]
网站如何防范“上传漏洞”入侵[2015-01-07]
SQL注入漏洞是IT安全的阿喀琉斯之踵[2015-01-07]
Bash漏洞来势凶猛 浪潮SSR主动防御[2015-01-06]
实践有效的网站防SQL注入[2015-01-12]
网站安全:整站如何防止SQL注入方式入侵[2015-01-12]
守住你的网站:防御DDoS攻击指南[2015-01-12]
保护FTP服务器口令安全的迫在眉睫[2015-01-09]
Windows 2003 IIS打造FTP服务器攻略[2015-01-09]
Web服务器常见IIS发布网站解决的问题[2015-01-09]