浅析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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
关于PHP中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
逐步提升php框架的性能
Jan 10 PHP
一家之言的经验之谈php+mysql扎实个人基本功
Mar 27 PHP
php防攻击代码升级版
Dec 29 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
php实现留言板功能(会话控制)
May 23 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 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
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
php中Snoopy类用法实例
2015/06/19 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python显示进度条的方法
2014/09/20 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
什么是python的列表推导式
2020/05/26 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
创建青年文明号材料
2014/05/09 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2015年党员承诺书
2015/01/21 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
比赛主持人开场白
2015/05/29 职场文书