我做了一个最小的JSP:
<%
response.sendRedirect(request.getQueryString());
%>显然,它不是很有用,但它足以触发一个FindBugs警告,我在我的实际JSP上也得到了这样的警告:
此代码直接将HTTP参数写入HTTP标头,从而允许HTTP响应分裂漏洞
然而,我很确定FindBugs在这里是错的。Per 医生们 getQueryString不对查询字符串进行解码,我不认为编码的查询字符串可以包含CRLF,因为它必须在请求行中。据我所知,CRLF是不可能进去的。
如果查询字符串为null,并且字符串将被解释为相对或不相关,这可能不是很好,但是这里是否存在HTTP响应分裂漏洞?
如果有的话,我们怎样才能防止呢?
发布于 2015-06-18 13:34:06
简短的回答是肯定的。但是有更多的安全问题,而不仅仅是响应分裂(也就是标题或CRLF注入)。还有一个“未经验证的重定向”问题。攻击者可以通过您的站点将您的客户重定向到其他危险站点(钓鱼、攻击等)。
解决方案是创建一个白名单,并检查当前目标是否在白名单中。这防止了这两个问题。对值进行编码只是解决响应分裂问题的方法,但不针对重定向问题工作。
https://stackoverflow.com/questions/30902563
复制相似问题