文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.2.2 漏洞防范
由于 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论