#java #spring-boot #spring-mvc #checkmarx #secure-coding
#java #весенняя загрузка #spring-mvc #checkmarx #безопасное кодирование
Вопрос:
Кто-нибудь может предложить надлежащий процесс очистки / проверки, необходимый для переменной CourseType в следующем методе getCourses. Я использую эту переменную для записи в файл журнала.
Я пробовал HtmlUtils.htmlEscape () но не получил ожидаемых результатов.
Спасибо!
@RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)
@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {
}
Комментарии:
1. Можете ли вы добавить часть кода, в которую вы записываете, в журнал?
2. Привет .. спасибо за ответ. Я записываю @RequestParam в журнал следующим образом -logger.info («Тип курса » HtmlUtils. htmlEscape (CourseType)). Это позволяет подделать журнал.
Ответ №1:
похоже, что инструмент Checkmarx в этом случае корректен.
Уязвимость «Подделки журналов» означает, что злоумышленник может создавать журналы действий, чувствительных к безопасности, и создавать ложный контрольный журнал, потенциально вовлекая невиновного пользователя или скрывая инцидент.
При использовании htmlEscape
некоторые специальные символы будут экранированы:
amp;amp<
представляет<
знак.amp;amp>
представляет>
знак.amp;ampamp;
представляетamp;
знак.amp;ampquot;
представляет"
метку.
Это не приведет к экранированию или удалению символов новой строки / EOL / tab, которых следует избегать, чтобы сохранить целостность журналов.
Рекомендации по наилучшей практике, позволяющие избежать подделки журналов, следующие:
-
Обязательно замените все соответствующие опасные символы. пример:
cleanInput = input.replace('t', '-').replace('n', '-').replace('r', '-');
-
Проверяйте все входные данные, независимо от источника. Проверка должна основываться на белом списке. Принимайте только данные, соответствующие указанной структуре, а не отклоняйте неправильные шаблоны. Проверьте: тип данных, размер, диапазон, формат, ожидаемые значения.
Надеюсь, это решит вашу проблему.
Ответ №2:
-
Взгляните на серию шпаргалок для ведения журнала — OWASP в разделе «Коллекция событий»
-
По-прежнему лучший кодировщик OWASP Java Encoder => Решить 2. из @yaloner
-
В OWASP также есть проект, который поможет вам справиться с внедрением журналов ведения журнала безопасности OWASP => Решить проблему 1. из @yaloner
Взгляните на них, и проблема будет решена
Комментарии:
1. Прямые ссылки на рассматриваемые проекты: github.com/OWASP/owasp-java-encoder и github.com/javabeanz/owasp-security-logging