Chr*_*phe 1 javascript xss innerhtml script-tag javascript-injection
我编写了一个微模板实用程序,它使用innerHTML 根据用户输入(纯文本字符串或html 字符串)在网页中注入html 片段。
我主要担心的是恶意脚本注入的风险。脚本可以通过脚本标签或内联事件(例如 img onload、div onmouseover)注入。
有没有办法清理 html 字符串以防止此类注入?另外,还有其他我应该注意的脚本注入方法吗?
如果您想安全起见,您需要在客户端和服务器上清理模板。不要编写自己的反 XSS 库,因为恶意用户一定会知道您未考虑到的漏洞;存在太多细微差别,除非您是 XSS 专家,否则您一定会错过其中一个。
在客户端,Google Caja有一个相当不错的HTML 清理实用程序,它将对 HTML 字符串执行强大的清理,清理恶意属性或其他令人讨厌的用户可以做令人讨厌的事情的区域,例如通过注入script标签进行 XSS 攻击。他们还清除属性和各种其他 XSS 注入点(object例如applet标签),因此您可以感到相当安全。
虽然您应该在服务器上进行清理以防止恶意用户简单地禁用 javascript 或覆盖 Caja 的清理程序,但您可以使用 Caja 清理输入和输出以尝试捕获尽可能多的数据。