在以下情况下是否可以进行HTTP响应分离:
String requestFilename = request.getParameter("name");
response.addHeader("content-disposition", "attachment; filename=" + requestFilename);
我直接将未经过验证的请求参数附加到响应标头。
我的问题是,通过使用CRLF字符,我们可以将自己的标头插入响应中。
到目前为止,我已尝试\r\n
和%0D%0A
,但它们无效。
response.addHeader()
对此类攻击免疫吗?
有人可以向我解释如何执行此攻击吗?
答案 0 :(得分:1)
您是否可以拆分http响应,将取决于托管代码的servlet容器。
例如,Tomcat通过CORS Filter处理响应拆分(至少对于传入请求)来防范常见的安全漏洞。
Tomcat还过滤写入响应的值-请参阅Http11OutputBuffer (line 383),这可以防止损坏的值以某种方式最终作为标头值返回给客户端。
永不言败,但是,如果您使用的是诸如Tomcat之类的流行Web服务器的最新版本,则应该可以避免响应拆分等众所周知的漏洞。