加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php防止CC攻击代码 php防止网页频繁刷新

发布时间:2020-12-13 03:00:33 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:php防止CC攻击代码 php防止网页频繁刷新》要点: 本文介绍了PHP实例:php防止CC攻击代码 php防止网页频繁刷新,希望对您有用。如果有疑问,可以联系我们。 PHP编程 网页快速恶意刷新,cc攻击就是攻击者利用代理服务器生成指向目标站点的合法哀求,

《PHP实例:php防止CC攻击代码 php防止网页频繁刷新》要点:
本文介绍了PHP实例:php防止CC攻击代码 php防止网页频繁刷新,希望对您有用。如果有疑问,可以联系我们。

PHP编程网页快速恶意刷新,cc攻击就是攻击者利用代理服务器生成指向目标站点的合法哀求,模拟多用户不停的对受害网站进行访问,特别是访问那些需要大量数据操作需要大量CUP时间的页面,最终导致目标网站服务器资源耗尽,一直到宕机崩溃,如此一来,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止.我们称之为CC攻击.尽管我们可以借助于一些防攻击的软件来实现,不过效果有时并不明显.

PHP编程下面我提供一段PHP的代码,可以起到一定的防CC攻击效果.
主要功能:在3秒内连续刷新页面5次以上将指向本机 http://127.0.0.1?
只需将该代码放到需要防CC攻击的页面即可.
源码

PHP编程
<?php
$timestampcc = time();
$cc_nowtime = $timestampcc;
if(session_is_registered('cc_lasttime')){
 $cc_lasttime = $_SESSION['cc_lasttime'];
 $cc_times = $_SESSION['cc_times']+1;
 $_SESSION['cc_times'] = $cc_times;
}else{
 $cc_lasttime = $cc_nowtime;
 $cc_times = 1;
 $_SESSION['cc_times'] = $cc_times;
 $_SESSION['cc_lasttime'] = $cc_lasttime;
} 
if(($cc_nowtime-$cc_lasttime)<3){//3秒内刷新5次以上可能为cc攻击
 if($cc_times>=5){
 echo '刷新太快!';
 exit;
 }
}else{
 $cc_times = 0;
 $_SESSION['cc_lasttime'] = $cc_nowtime;
 $_SESSION['cc_times'] = $cc_times;
} 
?>

PHP编程下面是为大家整理的PHP防CC攻击的有效办法:

PHP编程1.session记录
submit.php为发送页面,在这个页面上设置一个session变量,并作为隐藏域和表单一起发送到submitdeal.php页面,在服务器端把post上来的隐藏变量和服务器端记录的session变量进行对比,比如一样,则写入数据库并清除session,这样用户刷新页面,两个值不相等提示错误或跳转.
优点:不用用户输入验证码
缺点:表单容易被复制
2.验证码
原理和第一种一样,只是session数据不作为隐藏域提交,而是让用户填写,大多数网站都采用文字验证码和图片验证码,图片验证码平安性高.

PHP编程3.IP绑定
提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库.
4.cookie:客户提交后处理程序先检索客户端有没有设置cookie,则不重复提交;如果没有,则写数据,再写个cookie;
例:

PHP编程用户无意义的频繁跳转、哀求都会给服务器加重很多负担 其实 用cookie就可以防止这一点.

PHP编程
<?php 
error_reporting(0); 
//if($_COOKIE["ck"])die("刷新过快!"); 
if($_COOKIE["ck"])header("Location:http://www.baidu.com");//这里如果用户刷新过快,给予终止php脚本或者直接302跳转 
setcookie("ck","1",time()+3);//设定cookie存活时间3s 
echo "hello!"; 
?>

PHP编程方式一:

PHP编程
<?php  
session_start();  
$k=$_GET['k'];  
$t=$_GET['t'];  
$allowTime = 1800;//防刷新时间  
$ip = get_client_ip();  
$allowT = md5($ip.$k.$t);  
if(!isset($_SESSION[$allowT]))  
{  
 $refresh = true;  
 $_SESSION[$allowT] = time();  
}elseif(time() - $_SESSION[$allowT]>$allowTime){  
 $refresh = true;  
 $_SESSION[$allowT] = time();  
}else{  
 $refresh = false;  
}  
?> 

PHP编程?方式二:

PHP编程
<? 
session_start(); 
if(!emptyempty($_POST[name])){ 
 $data = $_POST[name]; 
 $tag = $_POST[tag]; 
 if($_SESSION[status]==$tag){ 
 echo $data; 
 }else{ 
 echo "不允许刷新!"; 
 } 
} 
$v = mt_rand(1,10000); 
?> 
<form method="post" name="magic" action="f5.php"><input type="hidden" 
name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit"> 
</form> 
<? 
echo $v; 
$_SESSION[status] = $v; 
?> 

PHP编程方式三:

PHP编程
<? 
session_start(); 
if(!emptyempty($_POST[name])){ 
 $data = $_POST[name]; 
 $tag = $_POST[tag]; 
 if($_SESSION[status]==$tag){ 
 echo $data; 
 }else{ 
 echo "不允许刷新!"; 
 } 
} 
$v = mt_rand(1,10000); 
?> 
<form method="post" name="magic" action="f5.php"><input type="hidden" 
name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit"> 
</form> 
<? 
echo $v; 
$_SESSION[status] = $v; 
?> 

PHP编程以上就是php防止CC攻击的多种方式,希望能赞助大家防止网页快速恶意刷新.

欢迎参与《PHP实例:php防止CC攻击代码 php防止网页频繁刷新》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读