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

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
简介:
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,如需转载请自行联系原作者






相关文章
|
4月前
|
SQL 安全 网络安全
网络安全防御矩阵:从云防火墙流量清洗到WAF语义分析的立体化防护
在数字化浪潮中,网络安全日益重要。云防火墙依托云计算技术,提供灵活高效的网络防护,适用于公有云和私有云环境;Web应用防火墙专注于HTTP/HTTPS流量,防范SQL注入、XSS等攻击,保护Web应用安全。两者结合使用可实现优势互补,构建更强大的网络安全防线,满足不同场景下的安全需求。
175 1
|
4月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
|
7月前
|
人工智能 运维 监控
超越传统网络防护,下一代防火墙安全策略解读
超越传统网络防护,下一代防火墙安全策略解读
196 6
|
9月前
|
SQL 存储 安全
如何防护SQL注入
在互联网中,SQL注入攻击是网站和应用面临的主要安全威胁之一。攻击者通过在输入字段中插入恶意SQL代码,企图非法访问或操控数据库。防范措施包括限制查询长度、使用参数化查询、采用ORM框架、遵循最小权限原则、定期更新系统以及使用SCDN等专业安全产品,以增强防护能力,保护数据安全。
|
9月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
330 0
|
存储 安全 JavaScript
Web漏洞挖掘:XSS与CSRF防护策略
【7月更文挑战第11天】XSS和CSRF作为Web应用中常见的安全漏洞,对系统安全构成了严重威胁。通过实施上述防护策略,可以有效减少这些漏洞的风险。然而,Web安全攻防是一个持续不断的过程,开发者需要持续关注应用的安全性,更新和修补安全漏洞,同时加强自身的安全意识和防范技能,以确保Web应用的安全性和稳定性。
|
11月前
|
SQL 关系型数据库 MySQL
Go语言中进行MySQL预处理和SQL注入防护
在现代Web应用开发中,安全性至关重要。SQL注入是一种常见的攻击方式,攻击者可通过构造特殊SQL查询来非法访问或修改数据库数据。本文介绍如何利用Go语言中的预处理SQL语句来防范此类攻击。预处理不仅能提升安全性,还能提高性能并简化代码。通过使用`?`作为占位符,Go自动处理参数转义,有效避免SQL注入。此外,文章还提供了连接MySQL数据库、执行预处理查询以及最佳实践的示例代码。务必遵循这些指导原则,确保应用程序的安全性。
274 0
|
弹性计算 监控 安全
通过NAT网关和云防火墙防护私网出站流量安全的最佳实践
针对云上企业出站流量安全攻击,企业可以通过采用“NAT网关+NAT边界防火墙”方案实现出向流量有效监控保护,有效降低恶意软件攻陷风险、内部人员风险、数据泄露风险、供应链风险、出站流量合规风险等
292 3
|
存储 JavaScript 网络安全
XSS 攻击是什么?如何防护?
XSS 攻击是什么?如何防护?
248 0
|
SQL 安全 Java
Spring Boot中的跨站点脚本攻击(XSS)与SQL注入防护
【6月更文挑战第15天】在现代Web应用程序开发中,安全性是一个至关重要的课题。跨站点脚本攻击(XSS)和SQL注入是最常见的两种攻击类型,它们可以严重威胁到应用程序的安全。
766 0