返回介绍

4.2.2 漏洞防范

发布于 2024-10-11 22:07:43 字数 707 浏览 0 评论 0 收藏 0

由于 XSS 漏洞在不同浏览器下有不同的利用方式,而且特别是业务上有需求使用富文本编辑器的时候,防御起来就更加复杂,所以在 XSS 防御这块应该从多个方面入手,尽量减少 XSS 漏洞。

4.2.2.1 特殊字符 HTML 实体转码

一般的 XSS 漏洞都是因为没过滤特殊字符,导致可以通过注入单双引号以及尖括号等字符利用漏洞,比如一个图片标签如下<img src="$_GET['a']"/>,则可以通过输入双引号来闭合第一个单引号利用漏洞,防御这类的 XSS 漏洞只需要过滤掉相关的特殊字符即可,特殊字符列表如下:

1)单引号(')

2)双引号(")

3)尖括号(<>)

4)反斜杠(\)

5)冒号(:)

6)and 符(&)

7)#号(#)

还有两个问题,这些字符应该怎么过滤,什么时候过滤?为了保证数据原始性,最好的过滤方式是在输出和二次调用的时候进行如 HTML 实体一类的转码,防止脚本注入的问题。

4.2.2.2 标签事件属性黑白名单

上面我们提到过滤特殊字符来防止 XSS 漏洞,实际上即使过滤了也同样可能会被绕过,比如利用跟宽字节注入一样的方式来吃掉反斜杠,再利用标签的事件来执行 js 代码,面对这样的情况,我们还得加标签事件的黑名单或者白名单,这里更推荐用白名单的方式,实现规则可以直接用正则表达式来匹配,如果匹配到的事件不在白名单列表,就直接拦截掉,而不是替换为空。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文