在以下情况下是否可以进行 HTTP 响应拆分:
String requestFilename = request.getParameter("name");
response.addHeader("content-disposition", "attachment; filename=" + requestFilename);
我直接将未经处理的请求参数附加到响应 header 中。
我的问题是,通过使用 CRLF 字符,我们可以将自己的 header 插入到响应中。
到目前为止,我已经尝试过 \r\n
和 %0D%0A
但它们不起作用。
response.addHeader()
是否能够免受此类攻击?
有人可以向我解释一下如何执行这种攻击吗?
最佳答案
在您的情况下,http 响应分割是否可行将取决于托管代码的 servlet 容器。
例如,Tomcat 通过CORS Filter 来防范常见的安全漏洞。处理响应拆分(至少对于传入请求)。
Tomcat 还会过滤写入响应的值 - 请参阅 Http11OutputBuffer (line 383) ,这可以防止损坏的值以某种方式最终作为 header 值返回给客户端。
永远不要说永远,但如果您使用的是 Tomcat 等流行网络服务器的最新版本,那么您应该不会受到响应 split 等众所周知的漏洞的影响。
关于java - java 情况下的 HTTP 响应拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851641/