我正在使用静态分析工具来查找错误并报告以下代码的警告
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 编码时删除警告。