4

PrimeFaces/OmniFaces などの JSF ユーティリティ キットまたはライブラリで使用できる HTML サニタイザーまたはクリーンアップ メソッドはありますか?

p:editor を介してユーザーが HTML 入力をサニタイズしescape="true"、stackexchange スタイルに従って、 を使用して安全な HTML 出力を表示する必要があります。HTML を表示する前に、サニタイズされた入力データをデータベースに保存して、安全に使用できるようにしescape="true"、XSS が危険にならないようにすることを考えています。

4

1 に答える 1

7

これを実現するには、基本的にスタンドアロンのHTML パーサーが必要です。HTML の解析はかなり複雑であり、そのタスクと責任は JSF、PrimeFaces、および OmniFaces の範囲を超えています。多くの既存の HTML 解析ライブラリの 1 つを取得することになっています。

例はJsoup ですSafelist。これには、HTML を:に対してサニタイズするという特定の目的のための別のメソッドさえありますJsoup#clean()。たとえば、画像のない基本的な HTML を許可する場合は、次を使用しますSafelist.basic()

String sanitizedHtml = Jsoup.clean(rawHtml, Safelist.basic());

まったく別の方法として、Markdownなどの特定のテキスト書式設定構文を使用する方法があります(ここでも使用されています)。基本的に、これらのパーサーはすべて、内部で HTML をサニタイズします。例はCommonMarkです。おそらくこれが、「stackexchange スタイル」と言ったときに実際に意味したことです。

DB への保存に関しては、生のフォームと解析されたフォームの両方を 2 つの別々のテキスト列に保存することをお勧めします。編集中は未加工のフォームを再表示する必要があります。生のフォームが編集された場合、解析されたフォームはバックグラウンドで更新される必要があります。表示中は、明らかに解析済みのフォームのみを で表示しescape="false"ます。

以下も参照してください。

于 2014-04-19T08:04:56.950 に答える