分享一个网站网站防火墙。功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
/*云体检通用漏洞防护补丁v1.1
更新时间:2013-05-25
功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞
*/
 
$url_arr = array (
'xss' => "\\=\\+\\/v(?:8|9|\\+|\\/)|\\%0acontent\\-(?:id|location|type|transfer\\-encoding)" ,
);
 
$args_arr = array (
'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)" ,
 
'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)" ,
 
'other' => "\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]" );
 
$referer = empty ( $_SERVER [ 'HTTP_REFERER' ]) ?  array () :  array ( $_SERVER [ 'HTTP_REFERER' ]);
$query_string = empty ( $_SERVER [ "QUERY_STRING" ]) ?  array () :  array ( $_SERVER [ "QUERY_STRING" ]);
 
check_data( $query_string , $url_arr );
check_data( $_GET , $args_arr );
check_data( $_POST , $args_arr );
check_data( $_COOKIE , $args_arr );
check_data( $referer , $args_arr );
function  W_log( $log )
{
     // $logpath=$_SERVER["DOCUMENT_ROOT"]."/".date('Ymd',time())."-log.txt";
     //注意在/home/下建立 www用户组的文件夹 attacklog 用于记录攻击数据
     $logpath = "/home/attacklog/" . $_SERVER [ 'HTTP_HOST' ]. "-" . date ( 'Ymd' ,time()). "-log.txt" ;
     $log_f = fopen ( $logpath , "a+" );
     fputs ( $log_f , $log . "\r\n" );
     fclose( $log_f );
}
function  check_data( $arr , $v ) {
  foreach ( $arr  as  $key => $value )
  {
     if (! is_array ( $key ))
     { check( $key , $v );}
     else
     { check_data( $key , $v );}
     
     if (! is_array ( $value ))
     { check( $value , $v );}
     else
     { check_data( $value , $v );}
  }
}
function  check( $str , $v )
{
     foreach ( $v  as  $key => $value )
     {
     if  (preg_match( "/" . $value . "/is" , $str )==1||preg_match( "/" . $value . "/is" ,urlencode( $str ))==1)
         {
             W_log( "<br>IP: " . $_SERVER [ "REMOTE_ADDR" ]. "<br>时间: " . strftime ( "%Y-%m-%d %H:%M:%S" ). "<br>host:" . $_SERVER [ 'HTTP_HOST' ]. "<br>页面:" . $_SERVER [ "PHP_SELF" ]. "<br>提交方式: " . $_SERVER [ "REQUEST_METHOD" ]. "<br>提交数据: " . $str );
             switch  ( $_SERVER [ 'HTTP_HOST' ]) {
                 case  'dangjian.citic.com' :
                     print  '{"code":"9999","msg":"数据包含非法参数,请重新操作"}' ;
                     break ;
                 case  'djfiles.citic.com' :
                     print  '{"code":"9999","msg":"数据包含非法参数,请重新操作"}' ;
                     break ;
                 case  'xfzx.citic.com' :
                     print  '{"code":"9999","msg":"数据包含非法参数,请重新操作"}' ;
                     break ;
                 default :
                     print  '{"code":"9999","msg":"数据包含非法参数,请重新操作"}' ;
                     break ;
             }
             exit ();
         }
     }
}
?>





在yii中加在的方法,

1
2
3
4
5
defined( 'YII_TRACE_LEVEL' or  define( 'YII_TRACE_LEVEL' ,3);
defined( 'G_APP_MODE_DEV' or  define( 'G_APP_MODE_DEV' ,false);
require_once ( 'waf.php' );
require_once ( $yii );
Yii::createWebApplication( $config )->run();






      本文转自ning1022 51CTO博客,原文链接:http://blog.51cto.com/ning1022/1889624,如需转载请自行联系原作者






相关文章
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
2月前
|
存储 安全 JavaScript
26、XSS漏洞介绍
26、XSS漏洞介绍
19 0
|
2月前
|
存储 安全 JavaScript
小课堂 -- XSS漏洞介绍
小课堂 -- XSS漏洞介绍
19 0
|
3月前
|
存储 开发框架 安全
如何处理预防XSS漏洞攻击问题
防止XSS攻击需要从多个方面入手,包括输入验证和过滤、输出编码、设置正确的HTTP头部、使用最新的安全框架和库、定期进行安全审计和漏洞扫描以及培训和意识提升等。只有综合运用这些措施,才能有效地防止XSS攻击,保护网站和用户的安全。
|
2月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
416 1
|
1月前
|
SQL 数据可视化 数据处理
使用SQL和Python处理Excel文件数据
使用SQL和Python处理Excel文件数据
54 0
|
3月前
|
SQL Java 流计算
Flink SQL UDF(用户自定义函数)需要打包成JAR文件并上传到Flink集群中
【1月更文挑战第1天】【1月更文挑战第2篇】Flink SQL UDF(用户自定义函数)需要打包成JAR文件并上传到Flink集群中
87 0
|
2月前
|
SQL Java 关系型数据库
Flink SQL 问题之用代码执行报错如何解决
Flink SQL报错通常指在使用Apache Flink的SQL接口执行数据处理任务时遇到的问题;本合集将收集常见的Flink SQL报错情况及其解决方法,帮助用户迅速恢复数据处理流程。
122 6
|
2月前
|
存储 安全
第二轮学习笔记:XSS跨站脚本漏洞
第二轮学习笔记:XSS跨站脚本漏洞
24 0
|
2月前
|
安全 开发工具 git
xss漏洞工具 -- xsser
xss漏洞工具 -- xsser
55 0