浅析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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
浅析is_writable的php实现
Jun 18 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
PHP中的traits简单使用实例
May 13 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 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学习笔记 数组的常用函数
2011/06/13 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
js实现无缝滚动图
2017/02/22 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Django实现文件上传下载
2019/10/06 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
劳资协议书范本
2014/04/23 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
武夷山导游词
2015/02/03 职场文书
业务员管理制度范本
2015/08/06 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
Django程序的优化技巧
2021/04/29 Python
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android