1

我编写了一个微模板实用程序,它使用 innerHTML 根据用户输入(纯文本字符串或 html 字符串)在网页中注入 html 片段。

我主要担心的是恶意脚本注入的风险。脚本可以通过脚本标签或内联事件(例如 img onload、div onmouseover)注入。

有没有办法清理 html 字符串以防止此类注入?另外,还有其他我应该注意的脚本注入方法吗?

4

1 回答 1

4

如果您想安全,您将在客户端和服务器上清理您的模板。不要编写自己的反 XSS 库,因为恶意用户一定会知道您没有考虑到的漏洞;细微差别太多了,除非您是 XSS 专家,否则您一定会错过任何一个。

在客户端,Google Caja有一个非常不错的HTML 清理实用程序,它可以对 HTML 字符串执行强大的清理,清理恶意属性或其他讨厌的用户可以做讨厌的事情的区域,例如通过注入script标签的 XSS 攻击。它们还清理属性和各种其他 XSS 注入点(例如,objectapplet标签),因此您可以感到相当安全。

虽然您应该在服务器上进行清理以防止恶意用户简单地禁用 javascript 或覆盖 Caja 的清理程序,但您可以使用 Caja 清理输入和输出以尽可能多地捕获。

于 2012-06-04T21:02:39.367 回答