XSS 前端防火墙 —— 整装待发
到目前为止,我们把能用前端脚本防御 XSS 的方案都列举了一遍。 尽管看起来似乎很复杂累赘,不过那些是理论探讨而已,在实际中未必要都实现。我们的目标只是为了预警,能发现问题就行,并非要做到滴水不漏的程度。 事实上,HTML5 早已制定了一套浏览器 XSS 解决方案 —— Content Security Policy ,并且大多主流浏览器实现了这个标准。 既然我们使用前端脚本重新实现一遍,因此得在各个方面占有优势。 兼容性 CSP 目前主流浏览器大多已支持, IE10、11 支持部分功能 。对于 IE10 之前的,当然就束手无策了。如果使用前端脚本实现,可根据浏览器的实际能力进退。 对于 第一篇 介绍的 DOM-XSS,只要支持标准事件模型即可开启,因此兼容 IE9 完全可行。 事实上,IE8 就已开放了浏览器 API 接口,并支持原生访问器的操作。所以,IE8 是支持钩子程序,并能拦截可疑元素。 考虑到实际中,大多情况不做拦截,仅仅上报日志用以预警。对于这样低的需求,任何版本的浏览器都是完全可行的,甚至连 IE6 也没问题。 由于国内 IE 浏览器仍占有相当一部分比例,因此使用前端脚本的方案,能覆盖到更广的用户群体中。 部署 CSP 是通过 HTTP 头部实现的,策略配置储存在 Content-Security-Policy 这个字段里,因此得在 Web 服务器端进行配置