Rumah > php教程 > php手册 > teks badan

PHP防CC攻击与防止快速刷新页面例子

WBOY
Lepaskan: 2016-05-25 16:41:42
asal
1580 orang telah melayarinya

CC攻击攻击的原因就是不停的刷新动态页面如php+mysql读写数据库的页面,这样如果刷新比较快可以导致页面卡死或服务器资源使用超量,从而导致服务器挂了,下面给大家整理了一些防止CC攻击的例子.

CC攻击原因

CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃,CC主要是用来攻击页面的,每个人都有这样的体验,当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户,多少线程就是多少用户,不停地进行访问那些需要大量数据操作,就是需要大量CPU时间的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止.

cc攻击刷新页面对我们没有任何意义,要说有意义就是把我们的网站资源使用尽了,防御CC攻击可以通过多种方法,禁止网站代理访问,尽量将网站做成静态页面,限制连接数量,修改最大超时时间等.

PHP实例代码如下:

<?php
//代理IP直接退出
emptyempty($_SERVER[&#39;HTTP_VIA&#39;]) or exit(&#39;Access Denied&#39;);
//防止快速刷新
session_start();
$seconds = &#39;3&#39;; //时间段[秒]
$refresh = &#39;5&#39;; //刷新次数
//设置监控变量
$cur_time = time();
if (isset($_SESSION[&#39;last_time&#39;])) {
    $_SESSION[&#39;refresh_times&#39;]+= 1;
} else {
    $_SESSION[&#39;refresh_times&#39;] = 1;
    $_SESSION[&#39;last_time&#39;] = $cur_time;
}
//处理监控结果
if ($cur_time - $_SESSION[&#39;last_time&#39;] < $seconds) {
    if ($_SESSION[&#39;refresh_times&#39;] >= $refresh) {
        //跳转至攻击者服务器地址
        header(sprintf(&#39;Location:%s&#39;, &#39;http://127.0.0.1&#39;));
        exit(&#39;Access Denied&#39;);
    }
    
} else {
    $_SESSION[&#39;refresh_times&#39;] = 0;
    $_SESSION[&#39;last_time&#39;] = $cur_time;
}
?>
Salin selepas log masuk

防火墙是防CC攻击一个非常不错的解决方案,不但不会对服务器有任何影响同时能有效的防止CC攻击.

推荐小站长可使用安全狗来做防CC攻击或使用linux iptalbs来防止CC攻击,同样像我的服务器有机房防火墙会自动拦截这些类型的攻击.


教程地址:

欢迎转载!但请带上文章地址^^

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan