[PHP] 防止XSS、SQL注入、代码执行、文件包含等多种高危漏洞 →→→→→进入此内容的聊天室

来自 , 2020-11-09, 写在 PHP, 查看 115 次.
URL http://www.code666.cn/view/2b64c2f1
  1. <?php
  2. /*云体检通用漏洞防护补丁v1.1
  3. 更新时间:2013-05-25
  4. 功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞
  5. 转自阿里云
  6. 使用方法:此代码另存为一个php文件,所有php文件包含此文件即可。
  7. */
  8.  
  9. $url_arr=array(
  10. 'xss'=>"\\=\\+\\/v(?:8|9|\\+|\\/)|\\%0acontent\\-(?:id|location|type|transfer\\-encoding)",
  11. );
  12.  
  13. $args_arr=array(
  14. 'xss'=>"[\\'\\\"\\;\\*\\<\\>].*\\bon[a-zA-Z]{3,15}[\\s\\r\\n\\v\\f]*\\=|\\b(?:expression)\\(|\\<script[\\s\\\\\\/]|\\<\\!\\[cdata\\[|\\b(?:eval|alert|prompt|msgbox)\\s*\\(|url\\((?:\\#|data|javascript)",
  15.  
  16. 'sql'=>"[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:dump|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",
  17.  
  18. 'other'=>"\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]");
  19.  
  20. $referer=empty($_SERVER['HTTP_REFERER']) ? array() : array($_SERVER['HTTP_REFERER']);
  21. $query_string=empty($_SERVER["QUERY_STRING"]) ? array() : array($_SERVER["QUERY_STRING"]);
  22.  
  23. check_data($query_string,$url_arr);
  24. check_data($_GET,$args_arr);
  25. check_data($_POST,$args_arr);
  26. check_data($_COOKIE,$args_arr);
  27. check_data($referer,$args_arr);
  28. function W_log($log)
  29. {
  30.         $logpath=$_SERVER["DOCUMENT_ROOT"]."/log.txt";
  31.         $log_f=fopen($logpath,"a+");
  32.         fputs($log_f,$log."\r\n");
  33.         fclose($log_f);
  34. }
  35. function check_data($arr,$v) {
  36.  foreach($arr as $key=>$value)
  37.  {
  38.         if(!is_array($key))
  39.         { check($key,$v);}
  40.         else
  41.         { check_data($key,$v);}
  42.        
  43.         if(!is_array($value))
  44.         { check($value,$v);}
  45.         else
  46.         { check_data($value,$v);}
  47.  }
  48. }
  49. function check($str,$v)
  50. {
  51.         foreach($v as $key=>$value)
  52.         {
  53.         if (preg_match("/".$value."/is",$str)==1||preg_match("/".$value."/is",urlencode($str))==1)
  54.                 {
  55.                         //W_log("<br>IP: ".$_SERVER["REMOTE_ADDR"]."<br>时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交数据: ".$str);
  56.                         print "您的提交带有不合法参数,谢谢合作";
  57.                         exit();
  58.                 }
  59.         }
  60. }
  61. ?>

回复 "防止XSS、SQL注入、代码执行、文件包含等多种高危漏洞"

这儿你可以回复上面这条便签

captcha