我制作了这个最小的JSP:
<%
response.sendRedirect(request.getQueryString());
%>
显然它不是很有用,但它足以触发FindBugs警告我也在使用真正的JSP:
此代码直接将HTTP参数写入HTTP标头 允许HTTP响应拆分漏洞
但是,我非常确定FindBugs在这里是错误的。每the docs getQueryString
不会对查询字符串进行解码,并且我不相信编码的查询字符串可以包含CRLF,因为它必须位于请求行中。据我所知,CRLF无法进入那里。
如果查询字符串为空,这个玩具页面会出现问题,并且该字符串将被解释为相对或不相关,这可能不是很好,但这里是否存在HTTP响应拆分漏洞?
如果有,我们怎么能阻止它?
答案 0 :(得分:0)
简短回答是肯定的。但是有更多的安全问题,而不仅仅是响应拆分(也就是头部或CRLF注入)。还有一个“未经验证的重定向”问题。攻击者可以将您的客户通过您的站点重定向到其他危险站点(网络钓鱼,利用等)。
解决方案是创建白名单并检查当前目标是否在白名单中。这可以防止这两个问题对值进行编码只是响应拆分问题的解决方案,但不能解决重定向问题。