在java的情况下HTTP响应拆分

时间:2015-03-04 10:08:31

标签: java httpresponse response-headers

在以下情况下是否可以进行HTTP响应分离:

String requestFilename = request.getParameter("name");

response.addHeader("content-disposition", "attachment; filename=" + requestFilename);

我直接将未经过验证的请求参数附加到响应标头。

我的问题是,通过使用CRLF字符,我们可以将自己的标头插入响应中。

到目前为止,我已尝试\r\n%0D%0A,但它们无效。

response.addHeader()对此类攻击免疫吗? 有人可以向我解释如何执行此攻击吗?

1 个答案:

答案 0 :(得分:1)

您是否可以拆分http响应,将取决于托管代码的servlet容器。

例如,Tomcat通过CORS Filter处理响应拆分(至少对于传入请求)来防范常见的安全漏洞。

Tomcat还过滤写入响应的值-请参阅Http11OutputBuffer (line 383),这可以防止损坏的值以某种方式最终作为标头值返回给客户端。

永不言败,但是,如果您使用的是诸如Tomcat之类的流行Web服务器的最新版本,则应该可以避免响应拆分等众所周知的漏洞。