php防止恶意频繁刷新页面或form提交
很多方法:(以下仅简单方法的简单思路,对于防止菜鸟“黑客”足矣):
1、检测referer来源地址是否为本站。($_SERVER['HTTP_REFERER'])
2、使用验证码来验证数据提交的合法性,能使用验证码就尽量使用。
3、记录IP,一定时间内禁止此ip进行二次提交/刷新。
4、前台用js生成随机加密码。
等等......
自己根据网上的实例瞎弄了一个(仅供参考):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<?php
session_start();
function
getIps(){
if
(
getenv
(
'HTTP_CLIENT_IP'
) &&
strcasecmp
(
getenv
(
'HTTP_CLIENT_IP'
),
'unknown'
)){
$IP
=
getenv
(
'HTTP_CLIENT_IP'
);
}
elseif
(
getenv
(
'HTTP_X_FORWARDED_FOR'
) &&
strcasecmp
(
getenv
(
'HTTP_X_FORWARDED_FOR'
),
'unknown'
)) {
$IP
=
getenv
(
'HTTP_X_FORWARDED_FOR'
);
}
elseif
(
getenv
(
'REMOTE_ADDR'
) &&
strcasecmp
(
getenv
(
'REMOTE_ADDR'
),
'unknown'
)) {
$IP
=
getenv
(
'REMOTE_ADDR'
);
}
elseif
(isset(
$_SERVER
[
'REMOTE_ADDR'
]) &&
$_SERVER
[
'REMOTE_ADDR'
] &&
strcasecmp
(
$_SERVER
[
'REMOTE_ADDR'
],
'unknown'
)) {
$IP
=
$_SERVER
[
'REMOTE_ADDR'
];
}
return
$IP
?
$IP
:
"unknow"
;
}
function
allowRefresh(
$parameter
){
date_default_timezone_set(
'Asia/Shanghai'
);
$nowUserIp
= getIps();
$allowOldTime
= md5(
$parameter
.
$nowUserIp
);
$allowTime
= 3;
//防刷新时间。单位:秒 10秒之后才能再次提交(刷新)
if
(!isset(
$_SESSION
[
$allowOldTime
])){
$_SESSION
[
$allowOldTime
] = time();
return
true;
}
elseif
(time() -
$_SESSION
[
$allowOldTime
] >
$allowTime
){
$_SESSION
[
$allowOldTime
] = time();
return
true;
}
else
{
return
false;
}
}
if
(
$_GET
){
$k
=
$_GET
[
'k'
];
$submitKey
=
$_GET
[
'submitKey'
];
$toCheckStr
=
$k
.
$submitKey
;
if
(
empty
(
$k
)||
empty
(
$submitKey
)||(
$submitKey
!==
'true'
)){
die
(
'errormsg'
);
}
if
(allowRefresh(
$toCheckStr
)==true){
echo
'Congratulations!<br />mysql听令:去搜索俺想要的结果!继续往下执行...'
;
}
else
{
echo
'请不要频繁提交'
;
}
}
?>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
/>
<form action=
""
method=
"get"
>
<input type=
"text"
name=
"k"
/><br />
<input type=
"text"
name=
"submitKey"
value=
"true"
/>
<input type=
"submit"
value=
"提交"
/>
</form>
|
本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1265776,如需转载请自行联系原作者