浅析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 相关文章推荐
无数据库的详细域名查询程序PHP版(5)
Oct 09 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
PHP基于进程控制函数实现多线程
Dec 09 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
多php服务器实现多session并发运行
2006/10/09 PHP
表单复选框向PHP传输数据的代码
2007/11/13 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
小程序实现留言板
2018/11/02 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
python绘制随机网络图形示例
2019/11/21 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
欢迎横幅标语
2014/06/17 职场文书
免职证明样本
2014/10/23 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电