2

可能是一个愚蠢的问题(很可能),但根据官方开发人员文档,GWT 的 HTML 小部件不是 XSS 安全的,嵌入自定义 HTML/脚本文本时必须小心。

所以我想我的问题是,为什么会这样:

HTML testLabel = new HTML("dada<script type='text/javascript'>document.write('<b>Hello World</b>');</script>");

不显示 javascript 弹出窗口?如果不知何故,GWT 的 HTML 小部件确实可以防止 XSS 攻击,那么在什么类型的情况下它不会(所以我可以知道会发生什么)?

4

2 回答 2

2

我不特别了解这个小部件,但总的来说,值得知道 XSS 向量有很多不同的风格。只有一小部分人实际使用该script标签。

一个非常重要的因素是它们取决于位置。例如,在任何标记之外是 xss 安全的字符串,在标记的属性值内或在 javascript 块内的定界字符串内可能不安全。

它们也可能依赖于浏览器,因为文档解析模型中存在许多利用“错误”。

要了解可被滥用以产生恶意 javascript 注入的各种不同向量,请参阅这两个备忘

我还建议您阅读 owasp 的预防备忘单

于 2012-04-13T11:13:19.310 回答
2

GWT 文档包含一些关于安全性的文章(包括使用SafeHtml处理 XSS )。

您的示例不起作用,因为通过定义的脚本innerHTML不会在 Chrome/Firefox 中执行(我认为 IE 使用defer属性有一些解决方法)。

但是你不应该依赖这个浏览器限制。所以最好使用 SafeHtml 并始终验证用户的输入。

于 2012-04-13T11:47:08.677 回答