最简单的查看方式SafeHtml是String任何 HTML 标记已被适当转义的位置。这可以防止跨站点脚本 (XSS) 攻击,因为它可以确保,例如,如果有人在表单中输入他们的姓名,因为<SCRIPT>alert('Fail')</SCRIPT>这是在呈现您的页面时显示的文本,而不是正在运行的 JavaScript。
所以不要有类似的东西:
String name = getValueOfName();
HTML widget = new HTML(name);
你应该使用:
String name = getValueOfName();
HTML widget = new HTML(SafeHtmlUtils.fromString(name));
SafeHtmlBuilder就像一个StringBuilder除了它会自动转义您添加的字符串中的 HTML 标记。所以扩展上面的例子:
String name = getValueOfName();
SafeHtmlBuilder shb = new SafeHtmlBuilder();
shb.appendEscaped("Name: ").appendEscaped(name);
HTML widget = new HTML(shb.toSafeHtml());
这是GWT 文档中的一个很好的指南SafeHtml,值得一读。