从康盛的ucenter中我们查看daddslashes函数,提到daddslashes函数,我们要看看前面的代码
unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);
$_GET = daddslashes($_GET, 1, TRUE);
$_POST = daddslashes($_POST, 1, TRUE);
$_COOKIE = daddslashes($_COOKIE, 1, TRUE);
$_SERVER = daddslashes($_SERVER);
$_FILES = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST, 1, TRUE);
这里将$_GET,$_POST,$_COOKIE和$_REQUEST这四个函数进行特殊过滤,下面我们再来看daddslashes函数
GET,$_POST,$_COOKIE和$_REQUEST这四个函数进行特殊过滤,下面我们再来看daddslashes函数
function
daddslashes(
$string
,
$force
= 0,
$strip
= FALSE) {
//字符串或数组 是否强制 是否去除
//如果魔术引用未开启 或 $force不为0
if
(!MAGIC_QUOTES_GPC ||
$force
) {
if
(
is_array
(
$string
)) {
//如果其为一个数组则循环执行此函数
foreach
(
$string
as
$key
=>
$val
) {
$string
[
$key
] = daddslashes(
$val
,
$force
);
}
}
else
{
$string
=
addslashes
(
$strip
?
stripslashes
(
$string
) :
$string
);
}
}
return
$string
;
}
|
从上面的函数我们可以看出,只要是$_GET,$_POST,$_COOKIE和$_REQUEST这四个超全局变量,都会进行特殊过滤,因为$_REQUEST函数包含了前面的三个函数,所以才要过滤这四个函数,当是这四个超全局变量的时候,不管是否开启了魔术引用,都将进行下面的先去掉反斜线再进行转义。
这样可以有效的防止太多的反斜线。