浅析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中的观察者模式
Mar 24 PHP
php中几种常见安全设置详解
Apr 06 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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
构建简单的Webmail系统
2006/10/09 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
前端微信支付js代码
2016/07/25 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
Python爬取国外天气预报网站的方法
2015/07/10 Python
简单解析Django框架中的表单验证
2015/07/17 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python中import与from方法总结(推荐)
2019/03/21 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
父母对孩子说的话
2014/04/12 职场文书
七夕情人节促销方案
2014/06/07 职场文书
妇女工作先进事迹
2014/08/17 职场文书
升学宴来宾致辞
2015/07/27 职场文书