20 | WAF:如何为漏洞百出的Web应用保驾护航?

在这里插入图片描述

如果你细心观察的话,应该会发现,随着 Web 应用越来越多,黑客的攻击目标也逐渐转向了针对 Web 安全的攻击。传统的防火墙主要专注于网络层的攻击防御,对 Web 安全的防御能力相对欠缺。因此,WAF(Web Application Firewall,Web 应用防护系统)的概念也就被提了出来。WAF 说白了就是应用网关防火墙的一种,它只专注于 Web 安全的防御,近几年来逐渐被当成一个相对独立的产品方向来研究。

那么,WAF 和防火墙到底有哪些区别呢?针对我们之前讲过的各种 Web 攻击手段,WAF 是如何提供保护的呢?今天,我们就一起来看!

WAF 的工作模式

前面我说过,WAF 的本质是“专注于 Web 安全的防火墙”,Web 安全关注于应用层的 HTTP 请求。因此,WAF 的分析和策略都工作于应用层。

在 Web 安全这个方向上,WAF 对比防火墙又做出了哪些改进呢?我们可以从 WAF 的三种工作模式入手,探讨这两者的区别。这三种工作模式分别是:透明代理、反向代理和插件模式。

透明代理和大部分防火墙的工作模式相同:在客户端和服务端通信不需要作出任何改变的情况下,对 HTTP 流量进行请求和转发。在这个过程中,为了解密 HTTPS 流量,WAF 必须和服务端同步 HTTPS 对称密钥。
在这里插入图片描述

透明代理的优点就是容易部署,它不需要客户端和服务端进行任何改动。但是,透明代理的缺点也有很多。透明代理本身不是一个 Web 服务,所以它无法修改或者响应 HTTP 的请求,只能够控制请求的通过或者拒绝。正因为如此,它也无法实现 Web 服务所提供的认证、内容过滤等功能。

区别于透明代理,反向代理要求客户端将请求的目标地址指向 WAF,而不是服务端。在反向代理工作模式中,服务端接收的请求,实际上也是由 WAF 发起的。在这个过程中,WAF 本身就相当于一个 Web 服务,只不过对所有的 HTTP 请求都进行了转发。
在这里插入图片描述

因为反向代理 WAF 本质上是一个 Web 服务,所以 HTTPS 证书可以直接部署在 WAF 上。WAF 在对 HTTPS 流量解密之后,就可以在内网中用 HTTP 的形式,向服务端发起代理请求了。

而且,反向代理 WAF 作为一个 Web 服务,能够提供的功能也更加丰富。比如,WAF 可以充当一个前置的认证平台,对所有请求进行身份校验和身份管理。同时,也因为在反向代理工作模式中,客户端和服务端不直接通信,而是将全部请求都先请求到 WAF 上,所以反向代理 WAF 对服务端的隔离也更加彻底。

但是,反向代理同样存在缺点。首先,功能更丰富意味着性能开销更大。因此,反向代理 WAF 对硬件要求更高。其次,反向代理 WAF 一旦宕机,就无法响应客户端的任何请求。这样一来,即使服务端仍然正常,但用户已经无法正常使用应用了。而对于透明代理 WAF 来说,如果 WAF 宕机了,只是无法提供 Web 防护而已,客户端和服务端的通信不会受到任何影响。

最后,我们来看插件模式。在插件模式中,WAF 不再是网络中一个独立的安全产品了,而是以插件的形式依附于 Web 服务端本身,为 Web 安全提供防护。

那怎么才能将 WAF 植入到服务端的逻辑中呢?我们最常使用的一种技术就是AOP(Aspect Oriented Programming,面向切面编程)技术。在 AOP 技术中,WAF 可以作为一个切片植入到服务端的逻辑中。
在这里插入图片描述

而且,目前 AOP 技术十分流行,各类编程语言都支持。所以,插件模式的 WAF 部署同样十分简单。但是,这种将 WAF 和服务端强耦合的方式,会带来一定的负向影响。

首先,WAF 和服务端一块工作在服务器上,会消耗服务器额外的资源,对 Web 服务本身的性能产生影响。

其次,WAF 和服务端耦合,也就意味着 WAF 的所有改动都会直接影响到服务端。对于代理模式的 WAF 来说,通常只需要自测就可以升级了。而对于插件模式的 WAF,它本身的升级必须和服务端一起进入评估和测试流程,就会增加额外的工作量。

为了帮助你理解这三种工作模式,我总结了一张表格。
在这里插入图片描述

总结一下,关于 WAF 的三种工作模式,你需要重点掌握这些内容:首先,WAF 将处理的请求协议限定为 HTTP,所以 WAF 比应用网关防火墙具备更高的专业性和灵活性;其次,WAF 可以以代理的形式,在网络中提供 Web 安全防护,也可以作为插件嵌入到服务端中;最后,我们也可以根据需求、成本和硬件环境等因素,选择不同的部署模式对 Web 安全进行防护。

WAF 的功能

在了解 WAF 的主要工作模式之后,我们知道,在部署模式上 WAF 比防火墙具备更高的灵活性。WAF 可以根据不同的需求,以不同的形式为 Web 服务提供保护。同样地,在功能上,WAF 也可以去实现一些 HTTP 请求中特有的安全功能。比如去解析 HTTP 数据、解密 HTTPS 流量等。下面,我们就来看一下,WAF 到底有哪些功能服务?

1. HTTP 解析能力

我们知道,WAF 专注于 Web 安全。因此,对 HTTP 请求进行解析是 WAF 最基础的能力。在 HTTP 中,通用的内容包括:请求的 URL 以及其中的参数、HTTP 头部信息、POST 的 body 内容等。

除此之外,某些攻击特征可能隐藏得比较深,比如 JSON 中的某个字段,无法通过 JSON 的整体内容检测出来,我们必须一个字段一个字段去判断。因此,WAF 还需要解析 XML、JSON 等 RPC 传输协议,能够理解对应的 key 和 value 分别是什么。

除了单纯地解析内容,WAF 还需要对 HTTP 内容做必要的处理。为什么要这么做呢?这主要有两方面原因。

第一,HTTP 中的内容可能经过了 UrlEncode 等编码方式的处理,因此,WAF 需要具备解码能力,避免攻击的特征通过编码来进行绕过。

第二,想要看到 HTTPS 中的加密内容,WAF 必须能够解密 HTTPS 请求。在透明代理模式中,WAF 需要和服务端同步 HTTPS 的密钥,才能够获得解密的请求;在反向代理模式中,WAF 自带证书,可以直接解密;在插件模式中,WAF 依靠服务端解密请求之后,再进行 HTTP 的解析。

2. Web 安全防护

通过对 HTTP 请求进行解析、对编码内容进行解码和对 HTTPS 进行解密之后,WAF 就能够获得全部 HTTP 请求内容了。在此基础之上,WAF 就可以对请求内容进行分析,为 Web 服务提供安全保护了。

我总结了三种主要的分析手段。

签名匹配:和杀毒软件中病毒库的概念类似,WAF 也可以维护一个攻击样本库。样本库中存有已知攻击请求的散列签名,只要 HTTP 请求内容的散列签名在这个样本库,就说明 HTTP 请求中携带了攻击内容。
正则匹配:签名匹配需要请求完全一致才能够检测出来,而正则匹配只需要部分特征就可以检测。WAF 可以通过抽象一些攻击特征的正则表达式,对 HTTP 请求进行检测。比如,如果请求的某个参数中出现了单引号,那么很有可能就是黑客发起的 SQL 注入攻击。
行为分析:除了针对单次请求的分析之外,WAF 还可以针对连续的访问请求特征进行提取和分析。为什么要这么做呢?这是因为,很多时候,我们无法准确判断单次请求是不是攻击请求,但是如果疑似的攻击请求频繁出现,我们就基本能够确定了。也就是说,一个用户不会频繁地访问同一个页面,而黑客需要对一个漏洞点发起多次尝试,才能够实现攻击的效果。
在识别到攻击的请求之后,WAF 就可以对请求进行拦截,从而避免 Web 服务受到黑客的攻击了。

3. 审计告警

WAF 还有另外一个重要的功能,就是为 Web 服务提供安全相关的审计和告警功能。Web 安全相关的审计包括:发生攻击的时间、路径、频次等。通过这些信息,开发人员能够知道自己的 Web 服务面对的攻击威胁是什么样的,也就能够更好地评估威胁,完善 Web 安全防护机制。

除此之外,WAF 还能提供其他的审计能力。这是因为,WAF 能够解析出 HTTP 请求的全部内容,提供审计所需要的全部日志字段。这些日志可以是各个页面的访问次数、用户的访问行为和接口的响应性能等。尽管这些指标和安全没有太多关系,但是它们对于产品设计和服务质量来说都很常见,那么 WAF 就可以作为一个统计分析工具,来为你提供服务。

4. 数据保护和虚拟补丁

反向代理或者插件模式的 WAF,还能够对 HTTP 请求中的数据进行一定的处理,提供额外的数据保护功能。

最简单的,WAF 可以加密 HTTP 响应中的 Cookie 内容,使得 Cookie 以保密的形式存储在浏览器中。当浏览器将加密后的 Cookie 附加到 HTTP 请求中的时候,WAF 又可以进行解密。这样一来,服务端接收到的始终是明文的信息,而实际上,WAF 通过加解密为 Cookie 提供了额外的保护。另外,WAF 还可以对返回内容中的手机号、身份证号等敏感字段进行统一的打码处理,避免因为开发的疏忽,导致这些敏感信息的泄露。

在介绍插件漏洞的时候,我们提到了防火墙可以提供虚拟补丁的功能,来临时对插件漏洞进行修复。如果插件是 Web 相关的服务,那么 WAF 是不是也可以提供虚拟补丁的功能呢?当然是可以的。那 WAF 是如何提供虚拟补丁的呢?我来举个简单的例子。

在经典的 Structs 2 漏洞中,黑客是通过 Structs 2 中包含的漏洞接口发起攻击的。所以,WAF 只需要将这些包含漏洞的接口进行封禁,或者对请求内容中的 Structs 2 攻击特征(特定接口的异常序列化数据)进行分析拦截,就能够临时避免 Structs 2 受到已公开的漏洞攻击。之后,我们只需要对 Structs 2 进行升级再打上补丁,这样就可以下线虚拟补丁了。

总结

好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。

在今天的课程中,我们主要介绍了 WAF 的工作模式和主要功能。简单来说,WAF 就是专注于 Web 安全的防火墙,它能够以透明代理、反向代理和插件的模式,运行在网络和系统的各个环节中。从功能上来说,WAF 能够解决绝大部分的 Web 安全问题,对于黑客针对 Web 的攻击进行分析和拦截,同时提供额外的审计告警、数据保护等能力。

同样地,在选取 WAF 的时候,我们首先需要考虑功能的完整性和易用性。公司能够以较低的成本部署 WAF,并解决大部分的 Web 安全问题,这是 WAF 最关键的效果。其次,就是可配置和可维护性,对于漏过的攻击请求如何进行补充完善,对于误判的请求如何进行放行,这是我们在使用 WAF 过程中必然会遇到的问题。一个好的 WAF 产品应该提供友好的入口,供开发和运维人员对漏过和误判的规则进行维护。
在这里插入图片描述

思考题

最后,给你留一道思考题。

任何安全产品都不可能达到 100% 的安全。你可以思考一下,在 Web 安全中,黑客能够通过哪些方式绕过 WAF 的检测和过滤呢?

欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!

下一讲

IDS:当黑客绕过了防火墙,你该如何发现?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68417.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

!大部分程序员只会写3年代码

程序员与别的专业有所不同,其他专业都是越老越香,而程序员却是一个例外,因为计算机技术更新太快,而且工作强度很大,因此大部分程序员只会写 3 年代码。3 年后要不晋升做项目经理,要么转行,个别研…

Qt之QGraphicsView实现截图(漏洞百出且BUG丛生版,部分源码+注释)

文章目录 一、截图操作示例图1.图元绘制示例2.文本添加操作示例3.设置操作示例4.截图拖动示例5.文件保存示例6.剪切板粘贴示例 二、内容指路和思路三、部分源码1.自定义文本框源码2.多类型图形数据的存储3.截图源码 总结相关文章 一、截图操作示例图 1.图元绘制示例 下方一次…

这可能是解决你Spring MVC接口漏洞百出的关键

1. 前言 在 Java 开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题。也有的使用 Postman 等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心了。所以建议在单元测试中测试接口&…

由苹果的低级Bug想到的

前段时间的问题,本来想写篇文章说说代码规范,code review相关的,不过看到果壳已经有篇很棒的文章,借来放在这里,也是对自己的指导。果壳很好,里面的文章都很有很有含金量,建议大家都收藏起来 原…

关于人工智能不会使大脑变懒惰的议论文_台湾人工智能学校执行长陈升玮:孩子成为这型人,就不怕被AI取代...

陪伴每个父母和小孩,成为更好的自己。 搜寻公众号 "亲子天下"(微信 ID:cn-parenting)关注 世界经济论坛〈工作大未来〉报告二○一六年的预测:二○二一年全世界会产生两百万个新工作,但随着人工智能(AI)兴起,…

关于人工智能不会使大脑变懒惰的议论文_人工智能的好处和风险:所有您需要知道的...

​ 人工智能不是想象中的未来。现在,在我们的搜索引擎中,人工智能不仅仅是自动完成,也不仅仅是自动驾驶汽车。从机器学习到机器人,人工智能为我们提供了多种技术,使机器能够感知,理解,学习和行动。 是否考虑将绝佳的AI机会纳入您的业务?在您做出决定之前,这里有一些AI…

有可以模拟钢琴弹奏乐曲的手机软件吗?

我们常常喜欢抱着手机做很多有趣的事。其实现在的智能手机真的可以做很多以前意想不到的事。像是手机里有可以模拟钢琴弹奏乐曲的手机软件,钢琴键盘模拟器很有趣。所以很受年轻的小伙伴欢迎。今天我就在这里和大家分享一下,可以模拟钢琴弹奏乐曲的手机软…

普通计算机可以演奏音乐吗,用电脑演奏的音乐还是音乐吗?

现代电子科技迅猛发展,很多作曲家都用电脑作曲,非常方便,就是演奏的时候也能交给电脑负责,合成多个音轨,演奏出复杂的音乐作品。那么,用电脑演奏的音乐还是音乐吗? 当然是音乐。电脑可以负责人脑…

freepiano 手残党也想弹钢琴(在电脑上弹奏电子钢琴自娱自乐,也许还是有点困难,不如试试freepiano+鼠标宏,这样用简谱就不怕残疾了)

我不懂五线谱,勉强能看看简谱,喜欢音乐,但又手残玩不好乐器,像是钢琴电子琴都是双手一起像打键盘一样弹右手位,没法自己搞伴奏,吉他也按不住大横按的和弦,简直没有音乐细菌。 自己想玩吧&#…

毛利率低至个位数,甚至为负?车载语音赛道「现实很骨感」

作为座舱智能化交互的关键角色之一,语音识别及交互一直以来也是不少汽车品牌的主打功能之一。 比如,随意打断语音助手,连续下达指令,融合更多车身控制功能,甚至是ChatGPT大模型的结合,给了消费者更多的想象…

北森控股,云端HCM解决方案“一哥”胜算几成?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日,云端HCM解决方案“一哥”北森控股有限公司(以下简称“北森控股”)再度递表港交所,摩根士丹利及中金公司为联席保荐人。 资料来源:北森控股招股书 此次IPO北森…

第四范式,第四次递表!能否凭借SageGPT挤进大模型赛道?

4月24日消息,据港交所文件,北京第四范式智能技术股份有限公司向港交所提交上市申请书,中金公司担任独家保荐人。如能顺利上市,第四范式将成为继商汤科技(00020.HK)、创新奇智(02121.HK&#xff…

机械图样解读——回转面

回转面的形成 直线或曲线绕轴线回转形成的曲面称为回转面。 回转面的表示

机械制图 机械识图 三视图画法认图视频教程

机械制图 机械识图 三视图画法认图视频教程 链接:https://pan.baidu.com/s/1fUtYooCRIkoLN5lyFURWCA 提取码:1612

解读机械图样——斜视图

斜视图是零件向不平行于基本投影面的平面投射所得的视图,用于表达零件上倾斜结构的真实形状,如图1-8所示。对于垂直于斜面的孔和槽,用斜视图可以按照实际的尺寸画出它的形状,也易于标注尺寸。 绘制斜视图时,一般在原图…

【CAD】机械类制图实用功能总结

【CAD】机械类制图实用功能总结 一、简介二、正文(一)快捷键/快捷字母(二)实用功能1、块2、零件件号标注及材料表关联(Vault)3、粗糙度标准更改4、增加图纸页数(Vault)5、尺寸对齐6、…

Highcharts绘制饼图

1、使用Highcharts制作饼图的效果图如下: 2、对应的JavaScript代码---pie-chart.js如下: $(function () {var chart;var totalMoney=50000$(document).ready(function() {chart = new Highcharts.Chart({chart: {renderTo: pie_chart,plotBackgroundColor: white,//背景颜色…

helm和chart

Helm helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。 he…

控制highcharts饼图四周线的长短

var colors [#08c60c,//绿色#ffc002,//黄色#eb3928,//红色#B5B5B5//灰色 ]; // 创建渐变色 Highcharts.getOptions().colors Highcharts.map(colors, function (color) {return {radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },stops: [[0, color],[1, Highcharts.Color(colo…

CAD轴测图怎么画?快来试试浩辰CAD超级轴测命令!

很多新手设计师小伙伴,不知道CAD轴测图怎么画?其实很简单,浩辰CAD中的超级轴测功能,可以方便地将CAD平面图转化为轴侧图,是绘制管线系统图的好帮手。今天就和小编一起来看看在浩辰CAD软件中通过调用超级轴测命令来绘制…