浅析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 身份证号验证函数
May 07 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
ucenter通信原理分析
Jan 09 PHP
php中file_exists函数使用详解
May 08 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
PHP重载基础知识回顾
Sep 10 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下载文件超时时间的设置方法
2016/10/06 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
python中pyplot基础图标函数整理
2020/11/10 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
英国鞋网:Rubber Sole
2020/03/03 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
活动总结格式范文
2014/04/26 职场文书
个人租房协议书样本
2014/10/01 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
《将心比心》教学反思
2016/02/23 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android