# 《分布式IM系统》大后端平台-通用模型-第05节:XSS漏洞校验规则的设计和实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/15UPQg4Gs (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★☆☆☆
  • 本节重点:基于通用拦截器规则链设计和实现XSS漏洞校验规则,掌握XSS漏洞校验规则的设计和实现,掌握在通用拦截器规则链上新增具体校验规则的方法,并能够将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/15UPQg4Gs (opens new window)

大家好,我是冰河~~

在前面的文章中,我们已经在分布式IM即时通讯系统的大后端平台中,设计和实现了通用的拦截器规则链,基于拦截器规则链,我们可以实现通用的校验规则,并且可以根据具体的业务场景,在拦截器规则链上添加具体的校验规则。

# 一、前言

在设计和研发一个Web系统的过程中,除了常规的业务校验外,我们还需要考虑一些安全措施,比如常见的XSS漏洞,SQL注入漏洞等。可能对于系统安全方面,大部分小伙伴接触的不多,甚至根本没有接触过,或者说在设计和研发系统的过程中就没有考虑过。但这却是设计和研发系统的过程中,非常重要的一环。

如果我们在设计和研发系统的过程中,不考虑一些安全措施,就可能造成系统出现重大安全漏洞,出现重大安全漏洞的系统,比出现一些常规Bug的系统损失要大得多。

# 二、本节诉求

对XSS漏洞进行介绍的介绍,在初步了解XSS漏洞基础的前提下,基于通用拦截器规则链设计和实现XSS漏洞校验规则,掌握在通用拦截器规则链上新增具体校验规则的方法,并能够将其灵活应用到自身实际项目中。

# 三、XSS漏洞介绍

XSS(Cross-site scripting)漏洞是一种常见的Web安全漏洞,攻击者可以通过在网站中注入恶意代码来实现攻击。攻击者注入的代码会被其他用户浏览器执行,从而导致窃取用户敏感信息、篡改网页内容、甚至控制用户账号等风险。所以,在常见的Web系统中,我们需要在设计和研发系统时,避免出现XSS漏洞,造成不必要的损失。

XSS漏洞通常分为三种类型:反射型、存储型和DOM-based。

  • 反射型XSS漏洞:攻击者通过构造特定的URL来触发,而服务器返回的HTML页面中包含了恶意脚本,当用户访问这个链接时就会执行该脚本。
  • 存储型XSS漏洞:攻击者将恶意脚本上传到服务器保存在数据库中,并在用户访问包含该脚本的页面时,该脚本被执行。
  • DOM-based XSS漏洞:攻击者通过修改网页中的DOM节点来触发,例如通过修改表单的值、URL参数等来实现攻击。

对于XSS漏洞,一些常规的解决方案如下所示。

  • 输入验证和过滤:对用户输入的数据进行验证和过滤,确保输入数据符合预期格式,并剔除潜在的恶意脚本。
  • 输出编码:对输出到网页的数据进行适当的编码,以防止恶意脚本被执行。
  • 使用安全框架和库:使用具有内置安全机制的框架和库,例如使用Web应用程序防火墙(WAF)来检测和阻止XSS攻击。
  • 限制脚本执行权限:使用CSP(内容安全策略)来限制页面加载的资源来源,从而减少XSS攻击的成功率。
  • 定期更新和修复漏洞:及时更新和修复已知的安全漏洞,保持应用程序和服务器的安全性。

# 四、XSS校验规则

XSS校验规则是拦截器规则链上一个针对XSS漏洞设计和实现的具体校验规则,加入XSS校验规则的拦截器规则链的执行流程如图5-1所示。


可以到,在拦截器规则链中新增具体的XSS校验规则后,整体执行流程不变,请求只有通过拦截器规则链中所有的校验规则后,才会将请求发往目标资源,只要有一个具体规则校验不通过,则不再将请求发往目标资源。

# 五、类结构设计

加入XSS校验规则的拦截器规则链的核心类结构设计如图5-2所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码