Предотвращение атаки разделения HTTP-ответов в Java - PullRequest
0 голосов
/ 24 октября 2019

Я использую пружинный контроллер, где у меня есть метод get, чтобы загрузить файл.

Метод контроллера используется для загрузки файла, и я задаю имя файла следующим образом ..

response.setHeader("Content-disposition", "attachment;filename=" + reportname+ ".csv");

гдеимя файла происходит от метода contrller, метод выглядит следующим образом:

@RequestMapping(value = "/{reportname}")
    public void downloadCSV(HttpServletResponse response, @PathVariable(name="reportname",required=true) @NotBlank String reportname)
            throws IOException {

Вот что я получаю в checkmarx:рапорт имяЗатем значение этого элемента проходит через код без надлежащей очистки или проверки и в конечном итоге используется в заголовке ответа HTTP в downloadCSV. Это может разрешить атаку разделения ответа HTTP в некоторых старых версиях, которые не ослабляют эту атаку.

1 Ответ

0 голосов
/ 14 ноября 2019

Вы должны быть уверены (по крайней мере), что:

  • имя отчета не содержит / или .. символа
  • имя отчета не содержит символа CRLF
  • reportname - это реальное имя файла (возможно, оно не содержит в себе.) ссылается на реализацию имени файла в вашей ОС для добавления выражения белого списка.

См. Проверка ввода из OWASPдля получения дополнительной информации и решений

...