Checkmarx Java исправить для Log Forging -sanitizing пользовательский ввод - PullRequest
1 голос
/ 26 марта 2019

Может кто-нибудь предложить правильный процесс очистки / проверки, требуемый для переменной courseType в следующем методе getCourses.Я использую эту переменную для записи в файл журнала.

Я пробовал HtmlUtils.HtmlEscape (), но не получил ожидаемых результатов.

Спасибо!

@RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)
@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {

}

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019
  1. Посмотрите на OWASP Предотвращение инъекций в разделе 'Log Injection'

  2. Лучший по-прежнему кодировщик OWASP Java Encoder => Решить 2. из @ yaloner

  3. Существует также проект в OWASP, который поможет вам справиться с инъекциями журнала OWASP Security Logging => Решите 1. @yaloner

Посмотрите на них, чтобы решить проблему

0 голосов
/ 28 марта 2019

похоже, что инструмент Checkmarx в этом случае правильный.

Уязвимость «Log Forging» означает, что злоумышленник может спроектировать журналы чувствительных к безопасности действий и проложить ложный контрольный журнал, что потенциально может повлечь за собой невиновность.Пользователь или скрытие инцидента.

При использовании htmlEscape будут экранированы некоторые специальные символы:

  • "& lt;"представляет собой <знак. </li>
  • "& gt;"представляет знак>.
  • "& amp;"представляет знак & *.
  • "& quot; обозначает знак".

Он не будет экранировать или удалять символы новой строки / EOL / табуляции, которых следует избегать, чтобы сохранитьцелостность журналов.

Рекомендации по предотвращению подделки журналов:

  1. Обязательно замените все соответствующие опасные символы.пример:

    cleanInput = input.replace ('\ t', '-'). replace ('\ n', '-'). replace ('\ r', '-');

  2. Проверка всех входных данных независимо от источника.Валидация должна основываться на белом списке.Принимайте только данные, соответствующие указанной структуре, а не отклоняйте неверные шаблоны.Проверьте: тип данных, размер, диапазон, формат, ожидаемые значения.

Надеюсь, это решит вашу проблему.

...