浅析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 相关文章推荐
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php实现简单文件下载的方法
Jan 30 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 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
apache rewrite_module模块使用教程
2008/01/10 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
jQuery实现动态加载瀑布流
2020/09/01 jQuery
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
python操作mysql数据库
2017/03/05 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
后勤人员岗位职责
2013/12/17 职场文书
银行职业规划书范文
2013/12/28 职场文书
教师一岗双责责任书
2014/04/16 职场文书
2014年母亲节寄语
2014/05/07 职场文书
校园广播稿精选
2014/10/01 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
退休欢送会致辞
2015/07/31 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python