Log Injection (Log Forgery), описывает уязвимость, возникающую при любом сценарии, в котором недоверенные входные данные могут загрязнить или нарушить целостность файлов журналов приложений или систем.
Если вы еще не знакомы с концепцией Log Injection, ознакомьтесь со статьей "Что такое Log Injection ?".
Чтобы узнать больше о том, как обнаружить уязвимости Log Injection, ознакомьтесь со статьей "Как тестировать Log Injection".
Ключ к предотвращению Log Injection состоит из двух частей:
- Выполняйте проверку ввода: Ограничьте набор символов и формат, чтобы они соответствовали вашим требованиям, и отклоняйте любой ввод, который не соответствует вашим ожиданиям. Выполняйте проверку ввода как на клиенте, так и на сервере (в зависимости от ситуации).
- Нейтрализуйте проблемные символы: Следующие символы должны быть "экранированы" или заменены, когда они появляются во входных данных, которые записываются в файлы/записи журнала:
\r Возврат каретки \n Новая строка 0x8 (octal 8) Backspace < Меньше > Больше & Амперсанд “ Кавычка ‘ Апостроф
Обратите внимание, что файлы журналов, содержимое которых будет отображаться в браузере или представляться в виде XML, также должны нейтрализовать метасимволы HTML. Достаточно стандартного кодирования HTML Entity.