现在的位置: 首页 > 综合 > 正文

【PHP】简单过滤xss类

2019年10月29日 ⁄ 综合 ⁄ 共 1061字 ⁄ 字号 评论关闭
  作者:zhanhailiang 修改日期:2013-04-02
<?php
 
class Env {
    public static function __callStatic($func, $args) {
        $dict = array('$_GET', '$_POST', '$_REQUEST', '$_COOKIE', '$_SERVER');
        if(!isset($args[0])) return '';
 
        $param = $args[0];
        $isHack = (isset($args[1])) ? !!$args[1] : TRUE;
 
        $func = '$_' . strtoupper($func);
        if(!in_array($func, $dict)) return '';
        eval("\$var = $func;");
 
        if(!isset($var[$param])) return '';
 
        if($isHack) {
            return self::hack($var[$param]);
        }
        return $var[$param];
    }
 
    public static function hack($str) {
        if(is_array($str)) {
            array_walk_recursive($str, 'self::filter');
        } else {
            $str = self::filter($str);
        }
        return $str;
    }
 
    public static function filter(&$str) {
        $str = htmlspecialchars($str);
        return $str;
    }
}
 
// 调用方法:
// 获取$_GET参数:Env::get('test');
// 获取$_POST参数:Env::post('test');
// 获取$_REQUEST参数:Env::request('test');
// 获取$_COOKIE参数:Env::cookie('test');
// 获取$_SERVER参数:Env::server('test');
 
 
$_GET['test'] = array('<script type="text/javascript">alert(1);</script>', '<script type="text/javascript">alert(1);</script>');
var_dump(Env::get('test'));
$_GET['test2'] = '<script type="text/javascript">alert(1);</script>';
var_dump(Env::get('test2'));

抱歉!评论已关闭.