【发布时间】:2019-10-24 10:30:47
【问题描述】:
我正在使用 spring 控制器,我有方法 get 下载文件。
控制器方法用于下载文件,我将文件名设置为这个..
response.setHeader("Content-disposition", "attachment;filename=" + reportname+ ".csv");
其中文件名来自控制器方法,方法看起来像..
@RequestMapping(value = "/{reportname}")
public void downloadCSV(HttpServletResponse response, @PathVariable(name="reportname",required=true) @NotBlank String reportname)
throws IOException {
我在 checkmarx 中得到的是这个。报告名称参数 .然后,此元素的值在未经过适当清理或验证的情况下流经代码,并最终在 downloadCSV 中的 HTTP 响应标头中使用 在某些无法缓解这种攻击的旧版本中,这可能会启用 HTTP 响应拆分攻击。
【问题讨论】:
-
允许调用者决定文件名的设计看起来很糟糕。
-
“没有经过适当的清理或验证” - 你为什么不改变它?你到底要什么?
标签: java spring-boot servlets spring-rest checkmarx