バグを見つけて次のコードで警告を報告する静的分析ツールを使用しています
response.sendRedirect(response.encodeRedirectURL(redirectToXXX));
警告は言う:
このコードは、HTTPパラメーターをHTTPヘッダーに直接書き込みます。これにより、HTTP応答分割の脆弱性が発生します。
しかし、私がこのようにそれを行うとき:
redirectToXXX= java.net.URLEncoder.encode(redirectToXXX.toString(),"ISO-8859-1");
response.sendRedirect(response.encodeRedirectURL(redirectToXXX));
警告が消えます。
私が理解していないのはencodeRedirectURL
、必要に応じてURLをエンコードすることになっているのに、なぜそれが警告を生成し、URLEncoder.encodeでエンコードされたときに警告を削除するのかということです。