浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法


Posted in PHP onJune 18, 2013

废话不多说,上代码

<?php
//查询禁止IP
$ip =$_SERVER['REMOTE_ADDR'];
$fileht=".htaccess2";
if(!file_exists($fileht))
 file_put_contents($fileht,"");
$filehtarr=@file($fileht);
if(in_array($ip."\r\n",$filehtarr))
 die("Warning:"."<br>"."Your IP address are forbided by some reason, IF you have any question Pls emill to shop@mydalle.com!");
//加入禁止IP
$time=time();
$fileforbid="log/forbidchk.dat";
if(file_exists($fileforbid)) { 
 if($time-filemtime($fileforbid)>60)
  unlink($fileforbid);
 else {
  $fileforbidarr=@file($fileforbid);
  if($ip==substr($fileforbidarr[0],0,strlen($ip))) {
   if($time-substr($fileforbidarr[1],0,strlen($time))>600)
    unlink($fileforbid);
   elseif($fileforbidarr[2]>600) {
    file_put_contents($fileht,$ip."\r\n",FILE_APPEND);
    unlink($fileforbid);
   } else { 
    $fileforbidarr[2]++;
    file_put_contents($fileforbid,$fileforbidarr);
   }
  }
 }
}
//防刷新
$str="";
$file="log/ipdate.dat";
if(!file_exists("log")&&!is_dir("log"))
 mkdir("log",0777);
if(!file_exists($file))
 file_put_contents($file,"");
$allowTime = 120;//防刷新时间
$allowNum=10;//防刷新次数
$uri=$_SERVER['REQUEST_URI'];
$checkip=md5($ip);
$checkuri=md5($uri);
$yesno=true;
$ipdate=@file($file);
foreach($ipdate as $k=>$v) { 
 $iptem=substr($v,0,32);
 $uritem=substr($v,32,32);
 $timetem=substr($v,64,10);
 $numtem=substr($v,74);
 if($time-$timetem<$allowTime) {
  if($iptem!=$checkip)
   $str.=$v;
  else {
   $yesno=false;
   if($uritem!=$checkuri) 
    $str.=$iptem.$checkuri.$time."1\r\n";
   elseif($numtem<$allowNum)
    $str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n";
   else {
    if(!file_exists($fileforbid)) {
     $addforbidarr=array($ip."\r\n",time()."\r\n",1);
     file_put_contents($fileforbid,$addforbidarr);
    }
    file_put_contents("log/forbided_ip.log",$ip."--".date("Y-m-d H:i:s",time())."--".$uri."\r\n",FILE_APPEND);
    $timepass=$timetem+$allowTime-$time;
    die("Warning:"."<br>"."Sorry,you are forbided by refreshing frequently too much, Pls wait for ".$timepass." seconds to continue!");
   }
  }
 }
}
if($yesno) $str.=$checkip.$checkuri.$time."1\r\n";
file_put_contents($file,$str);
?>
PHP 相关文章推荐
phpwind中的数据库操作类
Jan 02 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 PHP
php中数组最简单的使用方法
Dec 27 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 #PHP
php实现简单洗牌算法
Jun 18 #PHP
php抽奖小程序的实现代码
Jun 18 #PHP
解析PHP生成静态html文件的三种方法
Jun 18 #PHP
解析PHP汉字转换拼音的类
Jun 18 #PHP
解析php中反射的应用
Jun 18 #PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 #PHP
You might like
PHP4中实现动态代理
2006/10/09 PHP
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP批量生成缩略图的代码
2008/07/19 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
js 目录列举函数
2008/11/06 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
九种原生js动画效果
2015/11/11 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python实现端口转发器的方法
2015/03/13 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python 6行代码制作月历生成器
2020/09/18 Python
年终自我鉴定
2013/10/09 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
幼儿教育感言
2014/02/05 职场文书
民族团结先进个人材料
2014/02/05 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
靠谱的活动总结
2019/04/16 职场文书
古诗之感恩老师
2019/10/24 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
浅谈MySQL之select优化方案
2021/08/07 MySQL