Java情况下的HTTP响应拆分

问题描述 投票:4回答:1

在以下情况下是否可以拆分HTTP响应:

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

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

我将未经过处理的请求参数直接附加到响应头。

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

到目前为止,我已经尝试过\r\n%0D%0A,但它们不起作用。

response.addHeader()不受这种攻击吗?有人可以向我解释如何执行这种攻击吗?

java httpresponse response-headers
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.