YouTube ビデオを追加する機能を含む、リッチ テキスト編集機能をサイトに追加します。しかし一方で、安全性を維持し、XSS/HTML インジェクションを防止したいと考えています。以前は、データをエスケープするために次のコードを使用していました。
ESAPI.encoder().encodeForHTML
ESAPI.encoder().encodeForJavaScript
次に、許可されたタグのホワイトリストを追加する必要があります。この機能を実装する方法はありますか?
箱から出してはいけません。私が見る唯一のオプションは、ライブラリを拡張することです。org.owasp.esapi.codecs.HTMLEntityCodec
具体的な方法を見てみましょうmkCharacterToEntityMap()
これは、コーデックがエンコーダー クラスに何をエスケープし、何をエスケープしないかを伝える場所です。私はあなた自身を定義しますCodec
。
DefaultEncoder
次に、使用したい場所でコーデックを使用できるように、クラスにメソッドを追加/拡張する必要があります。おそらく次のようなものDefaultEncoder.encodeForHTML(String input, Codec codec)
ホワイトリストをさらに構成可能にする必要がある場合は"input1|input2|input3"
、コーデックが無視するものを認識できるように正規表現を送信できるように変更する必要があります。esapi.properties
技術サポートが完全な再展開を必要とせずに本番環境で変更できるように、 このホワイトリストを構成する必要があるでしょう。
ESAPI Validator.getValidSafeHTML()は、探しているものをほぼ提供します。現在、内部で AntiSamy を使用しています。OWASP Java HTML Sanitizerも試してみてください。非常に軽量で、依存関係がほとんどなく (まったくない場合もあります)、適切に保守されています。
-ケビン