1

コード内で @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 ドキュメントのサンプルです

public interface SampleXTemplates extends XTemplates {
  @XTemplate("<div>Hello, {name}!</div>")
  SafeHtml hello(String name);
}

いずれかの場合、表示フィールドをサニタイズまたは信頼するように宣言する方法はテンプレートにありますか? HtmlSanitizerのようなもの

4

1 に答える 1

1

StringXTemplate/SafeHtmlTemplates でレンダリングされるすべての値は自動的にサニタイズされます - <>、または&文字を渡してみてください。これは、属性またはタグ間のスペースに渡されるかどうかに関係なく当てはまります。GWT がそのような文字列の安全性を確保できない場合 (タグのhref属性や属性に渡すなど)、警告が発せられます。最初の例では、そのような警告が表示される可能性があります。astyle

SafeHtmlインスタンスを渡して、「この文字列が安全であることはわかっています」と宣言できます。通常、インスタンス、または何らかの種類の別のテンプレートを使用してそれらを作成しSafeHtmlUtilsますSafeHtmlBuilder

安全な URL はSafeUriインスタンスにすることができます - で作成してUriUtilsください。これにより、最初の例で発生する可能性のある警告を回避できます。

安全なスタイルはインスタンスにすることができます - クラスのインスタンスまたは静的メソッドSafeStylesを使用して作成します。SafeStylesBuilderSafeStylesUtils

そして最後に、実装の詳細として、ロジックと名前付きパラメーターとゲッターを解析して XTemplates が生成され、JavaScript に生成される前に SafeHtmlTemplates に変換されます。これにより、SafeHtmlTemplates が安全にするものはすべて、XTemplates でも​​安全になります。

于 2013-02-14T22:21:55.110 に答える