java - java 情况下的 HTTP 响应拆分

标签 java httpresponse response-headers

在以下情况下是否可以进行 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/

相关文章:

java - 如何防止使用 H2 进行 JUnit-Test 的日期更改?

java - 为什么 Spring 框架不记录 Autowiring Setter 注入(inject)?

java - 单击事件后,RecyclerView跳到顶部

java - 接收 HTTP 请求的响应

android - Android 上的间歇性 HttpClient GET 问题

node.js - 无法删除 Node Express 中的 x-powered-by header

java - jsp页面报错怎么解决?

java - Apache Tomcat 8.5.9 中未设置 X-Frame-Options header

Javascript 不会设置在 XHR 响应中收到的 httpcookie

php - 是头 ('Content-Type:text/plain' );有必要吗?