分享一个网站网站防火墙。功能说明:防护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,如需转载请自行联系原作者






相关文章
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
391 5
|
SQL 安全 网络安全
网络安全防御矩阵:从云防火墙流量清洗到WAF语义分析的立体化防护
在数字化浪潮中,网络安全日益重要。云防火墙依托云计算技术,提供灵活高效的网络防护,适用于公有云和私有云环境;Web应用防火墙专注于HTTP/HTTPS流量,防范SQL注入、XSS等攻击,保护Web应用安全。两者结合使用可实现优势互补,构建更强大的网络安全防线,满足不同场景下的安全需求。
649 1
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
5096 11
|
人工智能 运维 监控
超越传统网络防护,下一代防火墙安全策略解读
超越传统网络防护,下一代防火墙安全策略解读
604 6
|
SQL 安全 前端开发
让你彻底了解SQL注入、XSS和CSRF
了解SQL注入、XSS和CSRF
644 7
|
SQL 关系型数据库 MySQL
创建SQL数据库的基本步骤与代码指南
在信息时代,数据管理显得尤为重要,其中数据库系统已成为信息技术架构的关键部分。而当我们谈论数据库系统时,SQL(结构化查询语言)无疑是其中最核心的工具之一。本文将详细介绍如何使用SQL创建数据库,包括编写相应的代码和必要的步骤。由于篇幅限制,本文可能无法达到您要求的2000字长度,但会尽量涵盖创建数
673 3
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
1134 0
|
SQL 监控 关系型数据库
SQL错误代码1303解析与处理方法
在SQL编程和数据库管理中,遇到错误代码是常有的事,其中错误代码1303在不同数据库系统中可能代表不同的含义
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
2006 1
|
SQL 关系型数据库 MySQL
PolarDB产品使用问题之如何将指定的备份SQL文件导入到集群中
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
234 0