2

私は何年も前のJavaWebアプリケーションに取り組んでいます。

おそらく開発者が既存のコードを盲目的にコピーしているために<bean:write>、JSPのほとんどのsは、必要のない場合でも持っています。はJSP変数を出力するStrutsタグであり、が指定されている場合、HTMLエスケープを実行しません(したがって、属性に似ています)。これは、これらの一部がユーザー入力を出力しているため、アプリケーションがXSS攻撃に対して脆弱であることを意味します。filter="false"<bean:write>filter="false"filter="false"<c:out>escapeXml="false"<bean:write filter="false">

filter="false"アプリケーションでユーザーがTinyMCEテキスト領域を使用してHTMLを入力できる場合があるため、を包括的に削除することはできません。そのため、ユーザーが入力したフォーマットを保持するために、生のHTMLを出力する必要がある場合もあります(ただし、スクリプトを削除するために、ユーザーが入力したHTMLをサニタイズします)。

コードには数千のがfilter="false"含まれているため、必要かどうかを判断するための各監査には時間がかかりすぎます。

私たちが考えているのは、独自のバージョンのbean:writeタグをsecure:write作成し、JSPでbean:writeをsecure:writeにグローバルに検索/置換することです。secure:writeが指定されている場合、出力からスクリプトを削除しfilter="false"ます。この変更後も、ユーザーはフォーマットHTMLを実際には出力できない場所に出力させることができますが、XSSの脆弱性が修正されている限り、当面はそれについて心配する必要はありません。

secure:writeライブラリを使用してタグにスクリプトストリッピングを実装したいと考えています。https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Projectとhttps://code.google.com/を確認しています。 p /owasp-java-html-sanitizer/。どちらもHTMLをサニタイズできるように見えますが、AntiSamyは、アプリケーションへの途中ではなく、アプリケーションへの途中でHTMLをサニタイズするために使用されるように見えます。また、データは入力よりも頻繁に出力されるため、すべてのsecure:write出力の実行が遅くなる可能性があることを懸念していました。

私は2つの主な質問があります:

1)提案されたアプローチは、によって引き起こされたXSSの脆弱性を修正するために機能しfilter="false"ますか?

2)コンテンツを表示するときにHTMLサニタイズに使用するライブラリを推奨できますか?つまり、ページレンダリングのパフォーマンスに大きな影響を与えないほど高速です。誰かがAntiSamyまたはowasp-java-html-sanitizerを同様の目的で使用したことがありますか?

4

1 に答える 1

0

1) 提案されたアプローチは、filter="false" によって引き起こされる XSS 脆弱性を修正するために機能しますか?

これは間違いなく攻撃面を減らす改善のように思えますが、それだけでは不十分です。攻撃者が注入できなくなったら、 URL が期待される場所への<script>doEvil()</script>注入に集中するjavascript:doEvil()ため、URL が注入される場所も強化する必要があります。

XSS スキャナーを使用している場合は、説明どおりに実行してから、スキャナーを再実行し、挿入された JavaScript URL をテストすることを確認します。

URL がロックダウンされたら、スタイル属性または要素とイベント ハンドラー属性への書き込みを監査する必要があります。

2) コンテンツを表示するときに HTML サニタイズに使用するライブラリ、つまり、ページ レンダリングのパフォーマンスに大きな影響を与えないほど高速なライブラリを推奨できる人はいますか? 似たようなものに AntiSamy や owasp-java-html-sanitizer を使った人はいますか?

恥知らずなプラグイン: https://code.google.com/p/owasp-java-html-sanitizer/

XSS から保護しながら、サードパーティによって作成された HTML を Web アプリケーションに含めることができる Java で記述された、すばやく簡単に構成できる HTML サニタイザー。

于 2013-03-26T03:45:20.807 に答える