浅析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实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
Linux下php5.4启动脚本
Aug 03 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Python struct模块解析
2014/06/12 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
python range实例用法分享
2020/02/06 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
基于python3的socket聊天编程
2020/02/17 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
公司授权委托书范本
2014/09/18 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
python删除csv文件的行列
2021/04/06 Python