5

OWASP の善良な人々は、信頼できないデータを入れる HTML ドキュメントの部分 (本文、属性、JavaScript、CSS、または URL) にはエスケープ構文を使用しなければならないことを強調しています。OWASP-XSSを参照してください。彼らの API (ESAPI チームによって開発された) は、その後、各コンテキストのエンコーダーを使用してこれに対応します。

ESAPI.encoder().encodeForHTML("input"); ESAPI.encoder().encodeForHTMLAttribute("input"); ESAPI.encoder().encodeForJavaScript("input"); ESAPI.encoder().encodeForCSS("input"); ESAPI.encoder().encodeForURL("input");

その後、開発者はDOM ベースの XSSに対応できます。

私の質問は、GWT の safehtml パッケージがこれにどのように対応するのか、それとも単に HTML エンコーディングに焦点を当てているだけなのかということです。

4

1 に答える 1

4

SafeHtmlTemplatesそれを行います(ただし、GWTジェネレーターに依存しているため、クライアント側のみ)。「タグ スープ」パーサーを使用して HTML フラグメントを解析します。このパーサーはコンテキストを推測し、警告を記録するか、このコンテキストで引数を使用できない場合はスローします (たとえば、スクリプト コンテキストでのプレースホルダーのすべての使用を防ぎます)。 . これはまだ流動的ですが (SafeUriまだレビュー中であり、SafeStylesまだ厳しく制限されています)、やがてそこにあるでしょう (GWT 2.4 にあるはずです)。

さもないと:

  • SafeHtmlUtils<は、>&など'をすべてエスケープする"ため、結果は「HTML」および「HTML 属性」コンテキストに対して安全です。
  • SafeHtmlBuilderSafeHtmlUtilsのさまざまな追加メソッドは、内部で呼び出すだけです
  • UriUtilsは、安全でない URI をスクラブするためのツールを提供します ( SafeHtmlUtilsHTML 文字列を作成する場合は、後でパスまたは同等のものが必要になります。画像のソースまたはアンカーの href に値を直接使用するのとは対照的です)。
  • SafeStylesそれ自体は特定のものを提供しませんがSafeHtmlTemplates、CSS コンテキストの最初でのみ許可し、CSS コンテキストに他のものを入れようとすると警告をログに記録します。は、整形式のCSSの構築を支援するために、タイプ セーフなSafeStylesBuilderメソッドで拡張されることが期待されています。
  • 私はインターフェースに取り組んできましたが、URL コンテキストにSafeUri似ています。SafeStylesいずれは、 aまたは aのみを URL 属性の完全な値としてSafeHtmlTemplates許可し、安全であることを確認するためにを渡します。SafeUriStringStringUriUtils

簡単に言えば、あなたの質問に対する答えは次のとおりだと思います。はい、GWT の safehtml パッケージはこれに対応しています。ただし、安全を確保するために、(少なくとも今後 1 年間は) 常に最新バージョンの GWT を使用する必要があるでしょう。

于 2011-05-30T15:39:08.500 に答える