浅析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 flock 文件锁详细介绍
Dec 29 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
关于PHP求解三数之和问题详析
Nov 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php获取linux命令结果的实例
2017/03/13 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
使用console进行性能测试
2015/04/27 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
Python实现list反转实例汇总
2014/11/11 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
python 类详解及简单实例
2017/03/24 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
介绍一下gcc特性
2015/10/31 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
教师节横幅标语
2014/10/08 职场文书
人生遥控器观后感
2015/06/11 职场文书
Redis keys命令的具体使用
2022/06/05 Redis