ホームページ >Java >&#&チュートリアル >ソース コードを変更せずにサーブレット フィルターを使用してリクエスト パラメーターを変更するにはどうすればよいですか?
サーブレット フィルターを使用したリクエスト パラメーターの変更
既存の Web アプリケーションに問題があるにもかかわらず、ソース コードを変更することはできません。 XSS の脆弱性に対処するために、サーブレット フィルターがパラメーターをサニタイズすることが考慮されています。ただし、ServletRequest に setParameter メソッドがないことが課題となります。
解決策 1: HttpServletRequestWrapper
1 つの方法は、HttpServletRequestWrapper クラスを利用することです。このクラスをサブクラス化し、getParameter メソッドをオーバーライドすることで、サニタイズされた値をインターセプトして返すことができます。このラップされたリクエストは、元のリクエストの代わりにchain.doFilterに渡すことができます。
解決策 2: リクエスト属性
よりクリーンなソリューションには、元のサーブレット/JSP を次のように変更することが含まれます。パラメータの代わりにリクエスト属性を受け入れます。フィルターはパラメーターを検査し、サニタイズし、request.setAttribute を使用して属性を設定します。この方法では、サブクラス化やスプーフィングの必要がなくなりますが、他のアプリケーション コンポーネントを変更する必要があります。
考慮事項
HttpServletRequestWrapper の使用は、サーブレット API に準拠します。ただし、一部のサーブレット コンテナは、変更されたリクエストを doFilter に渡そうとすると異議を唱える可能性があります。
リクエスト属性のアプローチはより洗練されたソリューションを提供しますが、追加のコード変更が必要です。最終的に、選択は特定のアプリケーションとアプリケーション コードへのアクセス レベルによって異なります。
以上がソース コードを変更せずにサーブレット フィルターを使用してリクエスト パラメーターを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。