在纯前端渲染中,我们会明确的告诉欣赏器:下面要设置的内容是文本(.innerText),照旧属性(.setAttribute),照旧样式(.style)等等。欣赏器不会被轻易的被欺骗,执行预期外的代码了。
但纯前端渲染还需注意制止 DOM 型 XSS 漏洞(例如 onload 事件和 href 中的 javascript:xxx 等,请参考下文”防备 DOM 型 XSS 攻击“部分)。
在许多内部、管理系统中,采用纯前端渲染是非常合适的。但对于性能要求高,或有 SEO 需求的页面,我们仍然要面临拼接 HTML 的题目。
4.2 转义 HTML
如果拼接 HTML 是必要的,就需要采用合适的转义库,对 HTML 模板各处插入点举行充分的转义。
常用的模板引擎,如 doT.js、ejs、FreeMarker 等,对于 HTML 转义通常只有一个规则,就是把 & < > " ' / 这几个字符转义掉,确实能起到肯定的 XSS 防护作用,但并不完善:
|XSS 安全漏洞 | 简单转义是否有防护作用|