|
|
@@ -15,6 +15,71 @@ use crmeb\services\upload\Upload;
|
|
|
class UtilService
|
|
|
{
|
|
|
|
|
|
+ public static function filtrate($string)
|
|
|
+ {
|
|
|
+ $ra = array(
|
|
|
+ '/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/',
|
|
|
+ '/script/',
|
|
|
+ '/javascript/',
|
|
|
+ '/vbscript/',
|
|
|
+ '/expression/',
|
|
|
+ '/applet/',
|
|
|
+ '/meta/',
|
|
|
+ '/xml/',
|
|
|
+ '/blink/',
|
|
|
+ '/link/',
|
|
|
+ '/style/',
|
|
|
+ '/embed/',
|
|
|
+ '/object/',
|
|
|
+ '/frame/',
|
|
|
+ '/layer/',
|
|
|
+ '/title/',
|
|
|
+ '/bgsound/',
|
|
|
+ '/base/',
|
|
|
+ '/onload/',
|
|
|
+ '/onunload/',
|
|
|
+ '/onchange/',
|
|
|
+ '/onsubmit/',
|
|
|
+ '/onreset/',
|
|
|
+ '/onselect/',
|
|
|
+ '/onblur/',
|
|
|
+ '/onfocus/',
|
|
|
+ '/onabort/',
|
|
|
+ '/onkeydown/',
|
|
|
+ '/onkeypress/',
|
|
|
+ '/onkeyup/',
|
|
|
+ '/onclick/',
|
|
|
+ '/ondblclick/',
|
|
|
+ '/onmousedown/',
|
|
|
+ '/onmousemove/',
|
|
|
+ '/onmouseout/',
|
|
|
+ '/onmouseover/',
|
|
|
+ '/onmouseup/',
|
|
|
+ '/onunload/',
|
|
|
+ "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",
|
|
|
+ "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
|
|
|
+ );
|
|
|
+ $string = preg_replace($ra, '', $string); //删除非打印字符,粗暴式过滤xss可疑字符串
|
|
|
+ $string = str_replace(array('&', '<', '>'), array('&', '<', '>'), $string);
|
|
|
+ if (!get_magic_quotes_gpc()) //不对magic_quotes_gpc转义过的字符使用 addslashes(),避免双重转义。
|
|
|
+ {
|
|
|
+ $string = addslashes($string); //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)加上反斜线转义
|
|
|
+ }
|
|
|
+ //去除 HTML 和 PHP 标记并转换为 HTML 实体
|
|
|
+ return htmlentities(strip_tags($string));
|
|
|
+ }
|
|
|
+ public static function sweep($array)
|
|
|
+ {
|
|
|
+ if (is_array($array)) {
|
|
|
+ foreach ($array as $k => $v) {
|
|
|
+ $array[$k] = self::sweep($v);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $array = self::filtrate($array);
|
|
|
+ }
|
|
|
+ return $array;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取POST请求的数据
|
|
|
* @param $params
|
|
|
@@ -29,7 +94,7 @@ class UtilService
|
|
|
$i = 0;
|
|
|
foreach ($params as $param) {
|
|
|
if (!is_array($param)) {
|
|
|
- $p[$suffix == true ? $i++ : $param] = $request->param($param);
|
|
|
+ $p[$suffix == true ? $i++ : $param] = self::sweep($request->param($param));
|
|
|
} else {
|
|
|
if (!isset($param[1])) $param[1] = null;
|
|
|
if (!isset($param[2])) $param[2] = '';
|
|
|
@@ -43,7 +108,7 @@ class UtilService
|
|
|
$name = is_array($param[1]) ? $param[0] . '/a' : $param[0];
|
|
|
$keyName = $param[0];
|
|
|
}
|
|
|
- $p[$suffix == true ? $i++ : ($param[3] ? $param[3] : $keyName)] = $request->param($name, $param[1], $param[2]);
|
|
|
+ $p[$suffix == true ? $i++ : ($param[3] ? $param[3] : $keyName)] = self::sweep($request->param($name, $param[1], $param[2]));
|
|
|
if (not_empty_check($param[4])) {
|
|
|
if (!is_array($param[4])) {
|
|
|
if (is_string($param[4]) && !function_exists($param[4])) {
|
|
|
@@ -82,7 +147,7 @@ class UtilService
|
|
|
$i = 0;
|
|
|
foreach ($params as $param) {
|
|
|
if (!is_array($param)) {
|
|
|
- $p[$suffix == true ? $i++ : $param] = $request->param($param);
|
|
|
+ $p[$suffix == true ? $i++ : $param] = self::sweep($request->param($param));
|
|
|
} else {
|
|
|
if (!isset($param[1])) $param[1] = null;
|
|
|
if (!isset($param[2])) $param[2] = '';
|
|
|
@@ -96,7 +161,7 @@ class UtilService
|
|
|
$name = is_array($param[1]) ? $param[0] . '/a' : $param[0];
|
|
|
$keyName = $param[0];
|
|
|
}
|
|
|
- $p[$suffix == true ? $i++ : ($param[3] ? $param[3] : $keyName)] = $request->param($name, $param[1], $param[2]);
|
|
|
+ $p[$suffix == true ? $i++ : ($param[3] ? $param[3] : $keyName)] = self::sweep($request->param($name, $param[1], $param[2]));
|
|
|
if (not_empty_check($param[4])) {
|
|
|
if (!is_array($param[4])) {
|
|
|
if (is_string($param[4]) && !function_exists($param[4])) {
|