> php教程 > php手册 > PHP防CC攻击与防止快速刷新页面例子

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

WBOY
풀어 주다: 2016-05-25 16:41:42
원래의
1605명이 탐색했습니다.

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;
}
?>
로그인 후 복사

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

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


教程地址:

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿