{{PHP}}过滤XSS的简单方法

<?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'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值