国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php防止網(wǎng)站被攻擊的應急代碼

2024-05-04 23:39:45
字體:
來源:轉載
供稿:網(wǎng)友

這篇文章為大家提供了php防止網(wǎng)站被攻擊的應急代碼,這是一個辦法,絕對不是最好的解決方式,只是想提供給大家,大家一起探討探討。

前不久一個網(wǎng)站竟然被攻擊,數(shù)據(jù)庫被刷掉了,幸好客戶機器上有數(shù)據(jù)庫備份。遇到這么嚴重的問題,必須抓緊找出漏洞,防止再次被攻擊。各方面檢查之后發(fā)現(xiàn)除了服務器需要設置正確之外,其他無從下手,只好從ip地址上來解決這種攻擊的問題。

如果發(fā)現(xiàn)某個ip訪問網(wǎng)站太頻繁了就加入到黑名單禁止訪問,這不是一個很好的辦法,但情急之下向不更好的解決方式,只是權宜之計,以后再進行深入的研究一下。

這個方法總結為一句話就是:通過禁止IP頻繁訪問防止網(wǎng)站被防攻擊

 

 
  1. <?php  
  2. header('Content-type: text/html; charset=utf-8');  
  3. $ip=$_SERVER['REMOTE_ADDR'];//獲取當前訪問者的ip  
  4. $logFilePath='./log/';//日志記錄文件保存目錄  
  5. $fileht='.htaccess2';//被禁止的ip記錄文件  
  6. $allowtime=60;//防刷新時間  
  7. $allownum=5;//防刷新次數(shù)  
  8. $allowRefresh=120;//在允許刷新次數(shù)之后加入禁止ip文件中  
  9.  
  10. if(!file_exists($fileht)){  
  11. file_put_contents($fileht,'');  
  12. }  
  13. $filehtarr=@file($fileht);  
  14. if(in_array($ip."/r/n",$filehtarr)){  
  15. exit('警告:你的IP已經(jīng)被禁止了!');  
  16. }  
  17. //加入禁止ip  
  18. $time=time();  
  19. $fileforbid=$logFilePath.'forbidchk.dat';  
  20. if(file_exists($fileforbid)){  
  21. if($time-filemtime($fileforbid)>30){  
  22. @unlink($fileforbid);  
  23. }else{  
  24. $fileforbidarr=@file($fileforbid);  
  25. if($ip==substr($fileforbidarr[0],0,strlen($ip))){  
  26. if($time-substr($fileforbidarr[1],0,strlen($time))>120){  
  27. @unlink($fileforbid);  
  28. }else if($fileforbidarr[2]>$allowRefresh){  
  29. file_put_contents($fileht,$ip."/r/n",FILE_APPEND);  
  30. @unlink($fileforbid);  
  31. }else{  
  32. $fileforbidarr[2]++;  
  33. file_put_contents($fileforbid,$fileforbidarr);  
  34. }  
  35. }  
  36. }  
  37. }  
  38. //防刷新  
  39. $str='';  
  40. $file=$logFilePath.'ipdate.dat';  
  41. if(!file_exists($logFilePath)&&!is_dir($logFilePath)){  
  42. mkdir($logFilePath,0777);  
  43. }  
  44. if(!file_exists($file)){  
  45. file_put_contents($file,'');  
  46. }  
  47. $uri=$_SERVER['REQUEST_URI'];//獲取當前訪問的網(wǎng)頁文件地址  
  48. $checkip=md5($ip);  
  49. $checkuri=md5($uri);  
  50. $yesno=true;  
  51. $ipdate=@file($file);  
  52. foreach($ipdate as $k=>$v){  
  53. $iptem=substr($v,0,32);  
  54. $uritem=substr($v,32,32);  
  55. $timetem=substr($v,64,10);  
  56. $numtem=substr($v,74);  
  57. if($time-$timetem<$allowtime){  
  58. if($iptem!=$checkip){  
  59. $str.=$v;  
  60. }else{  
  61. $yesno=false;  
  62. if($uritem!=$checkuri){  
  63. $str.=$iptem.$checkuri.$time."/r/n";  
  64. }else if($numtem<$allownum){  
  65. $str.=$iptem.$uritem.$timetem.($numtem+1)."/r/n";  
  66. }  
  67. else{  
  68. if(!file_exists($fileforbid)){  
  69. $addforbidarr=array($ip."/r/n",time()."/r/n",1);  
  70. file_put_contents($fileforbid,$addforbidarr);  
  71. }  
  72. file_put_contents($logFilePath.'forbided_ip.log',$ip.'--'.date('Y-m-d H:i:s',time()).'--'.$uri."/r/n",FILE_APPEND);  
  73. $timepass=$timetem+$allowtime-$time;  
  74. exit('警告:不要刷新的太頻繁!');  
  75. }  
  76. }  
  77. }  
  78. }  
  79. if($yesno){  
  80. $str.=$checkip.$checkuri.$time."/r/n";  
  81. }  
  82. file_put_contents($file,$str);  

以上就是本文的全部內容,希望對大家學習有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 济南市| 嘉义市| 织金县| 海淀区| 班戈县| 安龙县| 建湖县| 广安市| 达尔| 工布江达县| 崇仁县| 溆浦县| 海门市| 栾城县| 宁晋县| 银川市| 潞城市| 灯塔市| 元氏县| 长兴县| 搜索| 油尖旺区| 松原市| 黄平县| 台南市| 厦门市| 府谷县| 天津市| 神农架林区| 稻城县| 怀化市| 乐亭县| 平定县| 香河县| 龙岩市| 江永县| 资溪县| 潢川县| 开平市| 宜章县| 定远县|