检测过滤get或post接收值类

<?php


class classMySec {
  function encode($data) {
if (is_array($data)) return array_map(array($this,'encode'), $data);
if (is_object($data)) {
 $tmp = clone $data; // avoid modifing original object
 foreach ( $data as $k => $var ) $tmp->{$k} = $this->encode($var);
 return $tmp;
}
return htmlentities($data);
  }


  function decode($data) {
if (is_array($data)) return array_map(array($this,'decode'), $data);
if (is_object($data)) {
 $tmp = clone $data; // avoid modifing original object
 foreach ( $data as $k => $var ) $tmp->{$k} = $this->decode($var);
 return $tmp;
}
return html_entity_decode($data);
  }
}


########## Base variables ##########
# SET VAR
$argv = array();
$argv = array_map('c_sec_userinput', $argv);
$_GET = array_map('c_sec_userinput', $_GET);
$_POST = array_map('c_sec_userinput', $_POST);
$_COOKIE = array_map('c_sec_userinput', $_COOKIE);
$_REQUEST = array_map('c_sec_userinput', $_REQUEST);


function c_sec_userinput($input){
  if(!isset($input)) return;
  $search = array("\\",  "\x00", "\x1a", "||", "$");
  $replace = array("\\\\","\\0", "\\Z", "", "");
  if(is_array($input)){
foreach ($input as $key => $value){
 if(get_magic_quotes_gpc()) $return[$key] = str_replace($search, $replace, stripslashes(c_sec_safe($value)));
 else $return[$key] = str_replace($search, $replace, c_sec_safe($value));
}
return $return;
  }else{
if(get_magic_quotes_gpc()) return str_replace($search, $replace, stripslashes(c_sec_safe($input)));
else return str_replace($search, $replace, c_sec_safe($input));
  }
}


function c_sec_safe($str){
  if(!isset($str))return;


  $class = new classMySec();
  $decode = $class->decode($str);


  if(preg_match('/(<\s*SCRIPT|SCRIPT\s*>)/i', $decode)) return;
  if(preg_match('/(<\s*IFRAME|IFRAME\s*>)/i', $decode)) return;
  if(preg_match('/(UNION|SELECT|CONCAT|DELETE|INSERT|DROP|FROM|WHERE) /i', $decode)) return;
  if(preg_match('/(UNION|SELECT|CONCAT|DELETE|INSERT|DROP|FROM|WHERE)\(/i', $decode)) return;
  if(preg_match('/\/\*/i', $decode)) return;
  if(preg_match('/\-\-/i', $decode)) return;
  return $str;
}


?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值