可能是一个愚蠢的问题(最有可能)但是根据官方开发者文档,GWT的HTML小部件不是XSS安全的,并且在嵌入自定义HTML /脚本文本时必须谨慎。
所以我想我的问题是,为什么会这样:
HTML testLabel = new HTML("dada<script type='text/javascript'>document.write('<b>Hello World</b>');</script>");
不显示javascript弹出窗口?如果不知何故,GWT的HTML小部件确实可以防止XSS攻击,那么在什么类型的情况下它不会(所以我可以知道会发生什么)?
2 个答案:
答案 0 :(得分:2)
我并不特别了解这个小部件,但一般来说,值得知道XSS向量来自许多风格。只有一小部分实际使用script
标记。
一个非常重要的因素是它们与位置有关。例如,在任何标记之外是xss-safe的字符串在标记的属性值内或javascript块内的分隔字符串内可能不安全。
它们也可以依赖于浏览器,因为许多人利用文档解析模型中的“错误”。
要了解可能被滥用以产生恶意javascript注入的各种不同向量,请参阅这两个cheat sheets
我还建议您阅读prevention cheat sheet at owasp
答案 1 :(得分:2)
GWT文档包含很少articles个安全性(包括使用SafeHtml处理XSS)。
您的示例无效,因为通过innerHTML
定义的脚本无法在Chrome / Firefox中执行(我认为IE使用defer
属性有一些解决方法)。
但是你不应该依赖这个浏览器限制。所以最好使用SafeHtml并始终验证来自用户的输入。