浅析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 相关文章推荐
PHP5 安装方法
Oct 09 PHP
PHP出错界面
Oct 09 PHP
用libTemplate实现静态网页的生成
Oct 09 PHP
如何把PHP转成EXE文件
Oct 09 PHP
PHP的autoload自动加载机制使用说明
Dec 28 PHP
php 中英文语言转换类代码
Aug 11 PHP
深入php多态的实现详解
Jun 09 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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初学者头疼问题总结
2006/07/08 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
详解php协程知识点
2018/09/21 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
js初始化验证实例详解
2016/11/26 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
详解jQuery事件
2017/01/13 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
vue登录路由验证的实现
2017/12/13 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
小学生期末自我鉴定
2014/01/19 职场文书
公司合作意向书范文
2014/07/30 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
避暑山庄导游词
2015/02/04 职场文书
三下乡个人总结
2015/03/04 职场文书
农村老人去世追悼词
2015/06/23 职场文书
高老头读书笔记
2015/06/30 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript