17 | Web 应用防火墙:怎样拦截恶意用户的非法请求?
李智慧
该思维导图由 AI 生成,仅供参考
你好,我是李智慧。
Web 应用防火墙(Web Application Firewall, WAF)通过对 HTTP(S) 请求进行检测,识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击,保护 Web 服务安全稳定。
Web 安全是所有互联网应用必须具备的功能,没有安全防护的应用犹如怀揣珠宝的儿童独自行走在盗贼环伺的黑夜里。我们准备开发一个 Web 应用防火墙,该防火墙可作为 Web 插件,部署在 Web 应用或者微服务网关等 HTTP 服务的入口,拦截恶意请求,保护系统安全。我们准备开发的 Web 应用防火墙名称为“Zhurong(祝融)”。
需求分析
HTTP 请求发送到 Web 服务器时,请求首先到达 Zhurong 防火墙,防火墙判断请求中是否包含恶意攻击信息。如果包含,防火墙根据配置策略,可选择拒绝请求,返回 418 状态码;也可以将请求中的恶意数据进行消毒处理,也就是对恶意数据进行替换,或者插入某些字符,从而使请求数据不再具有攻击性,然后再调用应用程序处理。如下图:
Zhurong 需要处理的攻击和安全漏洞列表:
概要设计
Zhurong 能够发现恶意攻击请求的主要手段,是对 HTTP 请求内容进行正则表达式匹配,将各种攻击类型可能包含的恶意内容构造成正则表达式,然后对 HTTP 请求头和请求体进行匹配。如果匹配成功,那么就触发相关的处理逻辑,直接拒绝请求;或者将请求中的恶意内容进行消毒,即进行字符替换,使攻击无法生效。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了一种名为“Zhurong(祝融)”的Web应用防火墙(WAF)的需求、概要设计和详细设计。该WAF通过对HTTP请求内容进行正则表达式匹配,识别并阻断SQL注入、跨站脚本攻击等恶意攻击。它采用远程配置来获取恶意内容的正则表达式,并在发现新的攻击漏洞时进行更新。文章详细介绍了WAF对XSS跨站点脚本攻击的处理方法,包括正则表达式匹配和消毒处理。整体而言,该WAF的设计思路清晰,能够有效拦截恶意请求,保护Web应用安全。文章还提到了WAF对CSRF跨站点请求伪造攻击和HTML注释与异常信息泄露的防护策略。通过过滤器自动在所有响应页面的表单form中添加一个隐藏字段,WAF可以有效防范CSRF攻击。此外,WAF还会检查响应状态码,匹配响应体内容,以防止异常信息泄露。整篇文章通过介绍WAF的设计原理和防护策略,为读者提供了对Web应用安全防护的深入了解和思考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《李智慧 · 高并发架构实战课》,新⼈⾸单¥59
《李智慧 · 高并发架构实战课》,新⼈⾸单¥59
立即购买
登录 后留言
全部留言(5)
- 最新
- 精选
- neohope除了课程中提到的几种,Web方面的还有水平越权攻击,垂直越权攻击,渗透攻击,漏洞攻击,源码分析攻击,DDOS攻击,缓存攻击,随机数预测攻击,字典攻击,刷单攻击,钓鱼网站,钓鱼邮件,木马攻击,社会工程学攻击等等很多种。 大型商业机构,一般都会信息数据安全方面投入高额成本,包括但不限于防火墙、网闸、安全扫码、杀毒软件、入侵检测、操作系统、中间件、编码流水线、安全策略、安全咨询等等。 但这方面的攻防其实是很不对等的,黑客只需攻破一点,其余投入便都成了马奇诺防线。近年来,社会工程系攻击频频爆雷。从这个角度看,提升员工的安全意识,与上面的各类投入相比,反而更加重要一些。
作者回复: 赞
2022-05-0510 - 雪碧心拔凉这种防火墙应用是要以一个应用的角色(类似网关?)挂在普通应用的前面,还是以sdk包的方式嵌入到应用中去? 如果是以网关的形式存在,那要解析body对性能是不是会有有很大的影响呢?一般我们网关都是响应式网关,不会去解析body流吧,解析body相当于要将数据从内核态拷贝到用户态,转发时在从用户态拷贝到内核态,性能是有影响吧?
作者回复: sdk 对性能有影响,但是web应用的响应时间一般是数百毫秒,而body解析的时间通常是微妙级,性能影响可以忽略。
2022-05-262 - 👽请教一下,这种多层的安全校验会不会有性能问题?要过滤这么多层,每一层都有若干个正则。需要匹配的字符串比较长的话,感觉性能可能会受影响。
作者回复: 对于服务器的CPU负载压力会比较大一点,但是这个耗时对于请求响应的处理周期而言是微不足道的。而且需要进行安全校验的请求包含的字符串一般不会太长
2022-03-2822 - peter请教老师两个问题: Q1:CSRF第一步怎么过渡到第二步? CSRF的第一步是访问正常服务器,怎么第二步就访问攻击者服务器了?怎么过渡的? Q2:假如应用服务器是Tomcat,Zhurong怎么才能先于tomcat处理请求?是将Zhurong注册到tomcat来作为一个前置filter吗?
作者回复: 1 就是常见的钓鱼,第一步是前提,需要登录被攻击的服务器,第二步不是必须的,钓鱼链接直接构造的复杂请求参数也可以,钓鱼链接直接指向被攻击服务器。更常见的是钓鱼链接指向攻击者自己的服务器,在返回响应中包含可执行脚本,脚本中构造复杂请求参数,访问被攻击的服务器。 2 是的
2022-03-282 - ABC早年在一个通用评论类插件(类似Disqus)里面,发现了JS脚本注入。有人在评论里面写了一个alert,导致每次进入页面的时候浏览器会弹出一个弹窗。2022-04-22
收起评论