我刚刚在我的代码中使用@Template和@XTemmplate。 我一直关注用户发起的内容与受信任的内容。
这是来自GWT SafeHtml
的样本 public interface MyTemplates extends SafeHtmlTemplates {
@Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
SafeHtml messageWithLink(SafeHtml message, String url, String linkText,
String style);
}
这是来自GXT XTemplate doc
的样本public interface SampleXTemplates extends XTemplates {
@XTemplate("<div>Hello, {name}!</div>")
SafeHtml hello(String name);
}
在其中一种模式中,是否有一种方法可以声明要清理或信任的显示字段? ala HtmlSanitizer
答案 0 :(得分:1)
在XTemplate / SafeHtmlTemplates中呈现的所有String
值都会自动清理 - 尝试传入<
,>
或&
个字符。无论是传递给属性还是标签之间的空格,都是如此。如果GWT无法确保此类字符串的安全性(例如将其传递到href
标记的a
属性或style
属性),则会发出警告。你的第一个例子可能会得到这样的警告。
SafeHtml
个实例来声明'我知道这个字符串是安全的'。通常,您使用SafeHtmlUtils
,SafeHtmlBuilder
实例或某种其他模板创建这些实例。
安全网址可以是SafeUri
个实例 - 使用UriUtils
创建它们。这将在您的第一个示例中解决可能的警告。
安全样式可以是SafeStyles
个实例 - 使用SafeStylesBuilder
实例或SafeStylesUtils
类中的静态方法创建它们。
最后,作为一个实现细节,XTemplates是通过解析逻辑和命名参数和getter生成的,并在生成JavaScript之前转换为SafeHtmlTemplates。这确保了SafeHtmlTemplates在XTemplates中安全的任何东西都是安全的。