php防止网站被攻击办法
最近网站经常被攻击,后来想到了一个利用php来防止网站受攻击的办法,下面是我的代码,代码不是最好的,根据自己的需求来做,下面来看看我的代码.
/* *网站防ip攻击代码(anti-ip attack code website)2010-11-20,ver2.0 *mydalle.com anti-refresh mechanism *design by www.phpfensi.com */ //查询禁止ip $ip = $_server [ 'remote_addr' ]; $fileht = ".htaccess2" ; if (! file_exists ( $fileht )) file_put_contents ( $fileht , "" ); $filehtarr =@file( $fileht ); if (in_array( $ip . "rn" , $filehtarr )) die ( "warning:" . "
" . "your ip address are forbided by mydalle.com anti-refresh mechanism, if you have any question pls emill to shop@mydalle.com!
(mydalle.com anti-refresh mechanism is to enable users to have a good shipping services, but there maybe some inevitable network problems in your ip address, so that you can mail to us to solve.)" ); //加入禁止ip $time =time(); $fileforbid = "log/forbidchk.dat" ; if ( file_exists ( $fileforbid )) { if ( $time - filemtime ( $fileforbid )>30)unlink( $fileforbid ); else { $fileforbidarr =@file( $fileforbid ); if ( $ip == substr ( $fileforbidarr [0],0, strlen ( $ip ))) { if ( $time - substr ( $fileforbidarr [1],0, strlen ( $time ))>120)unlink( $fileforbid ); elseif ( $fileforbidarr [2]>120){ file_put_contents ( $fileht , $ip . "rn" ,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 = 60; //防刷新时间 $allownum =5; //防刷新次数 $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 . "1rn" ; elseif ( $numtem < $allownum ) $str .= $iptem . $uritem . $timetem .( $numtem +1). "rn" ; else { if (! file_exists ( $fileforbid )){ $addforbidarr = array ( $ip . "rn" ,time(). "rn" ,1); file_put_contents ( $fileforbid , $addforbidarr );} file_put_contents ( "log/forbided_ip.log" , $ip . "--" . date ( "y-m-d h:i:s" ,time()). "--" . $uri . "rn" ,file_append); $timepass = $timetem + $allowtime - $time ; die ( "warning:" . "
" . "pls don't refresh too frequently, and wait for " . $timepass . " seconds to continue, if not your ip address will be forbided automatic by mydalle.com anti-refresh mechanism!
(mydalle.com anti-refresh mechanism is to enable users to have a good shipping services, but there maybe some inevitable network problems in your ip address, so that you can mail to us to solve.)" ); } //开源代码phpfensi.com } } } if ( $yesno ) $str .= $checkip . $checkuri . $time . "1rn" ; file_put_contents ( $file , $str ); ?>查看更多关于php防止网站被攻击办法 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30015