誰かがブラウザに次の URL を入力したとします。
http://www.mywebsite.com/<script>alert(1)</script>
ページは通常どおり表示され、アラート ポップアップも表示されます。これは 404 になるはずだと思いますが、どうすればそれを達成するのが最善でしょうか?
私の webapp は Tomcat 7 サーバーで実行されています。最新のブラウザはこれに対して自動的に保護しますが、IE6 を見ている古いブラウザはそうではありません。
実際に 404 ページを取得しているように見えますが、そのページにはリソース (この場合は JavaScript コードの一部) が含まれており、< と > をそれぞれの HTML エンティティに変換することはありません。私はこれがいくつかのウェブサイトで起こるのを見てきました。
解決策は、リソースをページにエコー バックしないカスタム 404 ページを作成するか、事前に適切な HTML エンティティ変換を行うことです。これを行うのに役立つチュートリアルがたくさんあります。
これが私がしたことです:
OWASP の HTML サニタイザーを使用して危険な文字をチェックする高レベルのサーブレット フィルターを作成しました。ある場合は、404 ページにリダイレクトします。
XSS 攻撃から保護するために、webapp にフィルターを配置する必要があります。
HttpServletRequest オブジェクトからすべてのパラメーターを取得し、フィルター コードで任意のパラメーターをスペースで始まる値に置き換えます。
これにより、有害な JS スクリプトがサーバー側のコンポーネントに到達しなくなります。