跳转到主要内容

WAF

本文约需 2 分钟阅读

WAF (Web Application Firewall) 是一种专用防火墙,它检查发往 Web 应用程序的 HTTP/HTTPS 流量,并检测和拦截SQL 注入和XSS 等攻击。普通防火墙在网络层 (IP 地址、端口号) 控制通信,而 WAF 则解析应用层 (HTTP 请求的内容)。截至 2025 年,针对 API 安全的专用 WAF 功能正在不断增强。

以次数为标准的判定实际区分了什么

以规定时间内来自同一发送方的数量为标准进行拦截的机制,并不是在区分攻击与正规使用,而是在区分到达方式的聚集程度。只要作为标准的数量与时间幅度是固定的,把发送方分成几个、或把到达的间隔拉开,就足以落到标准之下,拦截一侧也就什么都不会留下。反过来把标准收紧,则反复更正输入错误的人,或因通信不稳定而重复发送同一内容的情形,看起来都会是同一个样子。只要仅以数量划分,就不存在同时满足这两者的取值。而且,同一发送方这一单位,与实际进行操作的人这一单位并不一致。在许多人经由同一出口到达的构成中,彼此无关的人会汇合成一个发送方;反过来,一个人的操作也会因所在位置或线路的切换而分散到多个发送方。由于单位不一致,以发送方为依据进行清点时,归并过度与拆分过度会在同一机制中同时发生。此外,如何回复被拦截这件事,本身就传达了标准所在的位置。若放行与拦截在应答的内容或返回所需的时间上存在差异,从外部就能确认拦截是从何处开始的。一旦知道了分界,只要保持在其之下就能持续通过;因此在决定拦截标准时,也要同时决定把拦截这一事实向对方展示到何种程度。

WAF 的检测方式

基于特征 (签名) 的方式通过将已知攻击模式 (例如包含 SQL 语句的请求参数) 定义为规则来进行检测。评分方式对多个可疑特征赋予分数,并拦截超过阈值的请求。基于机器学习的方式通过学习正常流量来自动检测异常请求。 AWS WAF 、 Cloudflare WAF 、 Akamai 等云 WAF 的优势在于能够将全球威胁情报实时反映到规则中。

对同一个请求,各层分别检查到哪里

网络层 - 普通防火墙可用于判断的范围
来源 IP 地址目标端口号
仅凭这一范围,无法区分到达登录页面的提交是正规输入还是攻击。
WAF 会进一步解析同一请求的内容
应用层 - WAF 解析的范围 (HTTP 请求的内容)
URL 路径与方法
向电商网站登录页面的提交
如果同一 IP 在 1 分钟内进行了 200 次以上的登录尝试,基于速率的规则会自动将其拦截 (撞库)。
查询参数
在搜索表单中输入的字符串
如果请求参数中包含 SQL 语句,基于特征 (签名) 的方式会将其作为已知攻击模式检测出来 (SQL 注入)。
请求正文
作为评论提交发送的内容
检测并拦截植入在投稿正文中的脚本 (XSS)。
如果未被判定为攻击,请求会被转发至 Web 服务器。
如果被判定为攻击,请求会在此被拦截,不会到达 Web 服务器。

即使没有命中某一条模式,在评分方式下,只要可疑特征的分数总和超过阈值就会被拦截。在基于机器学习的方式下,偏离所学习的正常流量本身就是判断依据。另外,在部署后立即使用的监控模式下,即使被判定为攻击也不会拦截,而是转发至 Web 服务器。

部署场景与运维

在电商网站上,WAF 可防御针对登录页面的撞库攻击、针对搜索表单的 SQL 注入以及针对评论提交的 XSS。部署后立即以监控模式 (仅检测,不拦截) 运行,掌握误报模式后再切换到拦截模式更为安全。处理正规请求被误拦截的误报 (false positive) 是 WAF 运维的最大课题。通过将DNS 安全与 WAF 结合,可以实现多层次的 Web 防御。

WAF 的局限性

WAF 终究只是防御层之一,并不能替代修复应用程序本身的漏洞。由于存在绕过 WAF 的高级攻击手法,因此安全编码与 WAF 二者缺一不可。请用强随机密码保护 WAF 的管理控制台,并将规则的变更历史记录到审计日志中。

相关术语

这篇文章对您有帮助吗?