[php]
//过滤参数
function addslashes_deep(KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (empty(value)){
return KaTeX parse error: Expected 'EOF', got '}' at position 12: value; }̲else{ r…value) ? array_map(‘addslashes_deep’,
v
a
l
u
e
)
:
a
d
d
s
l
a
s
h
e
s
(
value) : addslashes(
value):addslashes(value);
}
}
//调用的地方
if (!get_magic_quotes_gpc()){
if (!empty($_GET)){
G
E
T
=
a
d
d
s
l
a
s
h
e
s
d
e
e
p
(
_GET = addslashes_deep(
GET=addslashesdeep(_GET);
}
if (!empty($_POST)){
P
O
S
T
=
a
d
d
s
l
a
s
h
e
s
d
e
e
p
(
_POST = addslashes_deep(
POST=addslashesdeep(_POST);
}
C
O
O
K
I
E
=
a
d
d
s
l
a
s
h
e
s
d
e
e
p
(
_COOKIE = addslashes_deep(
COOKIE=addslashesdeep(_COOKIE);
R
E
Q
U
E
S
T
=
a
d
d
s
l
a
s
h
e
s
d
e
e
p
(
_REQUEST = addslashes_deep(
REQUEST=addslashesdeep(_REQUEST);
}
[/php]
这个是防止magic_quotes_gpc 未开启导致的安全问题
另一种方法:
如果get_magic_quotes_gpc()就先stripslashes转化回来,再mysql_real_escape_string过滤。
foreach ($_COOKIE as $key => $value) {
if(get_magic_quotes_gpc())
C
O
O
K
I
E
[
_COOKIE[
COOKIE[key]=stripslashes($value);
C
O
O
K
I
E
[
_COOKIE[
COOKIE[key] = mysql_real_escape_string($value);
}
原理:是数字就按数字处理,有格式就按照格式处理,纯字符串该转义的转义,如果用户提交的数据要显示在页面上,那么一定要过滤html标签,如果用户提交的数据是html的,那么要过滤相关的js代码iframe,script,style标签等等,过滤html元素的各种js事件属性等等
转自:https://blog.csdn.net/enough_br/article/details/6616139