Попросите Apache принять LF против CRLF в заголовках запроса

У меня есть устаревший продукт, который я пытаюсь поддерживать на сервере Apache и на сервере только после того, как последнее обновление начало отклонять заголовки запросов, которые использовали только LF для строк новой строки, и это высокий порядок для его восстановления из-за того, сколько лет база кода есть. Есть ли где-нибудь параметр, который можно использовать, или команда mod_rewrite, которая может быть использована для разрешения заголовков запросов, которые используют LF вместо CRLF или которые будут переписывать LF как CRLF в заголовках запроса?

Пример заголовка из приложения:

Host: www.ourhostname.com:80\n
Accept-language: en\n
user_agent: Our Old Application\n
\n

Если я шестнадцатеричный, отредактируйте файл, чтобы изменить \n на \r\n, он работает, но шестнадцатеричное редактирование файла для выпуска в виде обновления нежелательно, и я пытаюсь найти что-то серверное Apache перестает задыхаться от LF самостоятельно. Заранее благодарим за любую помощь по этой проблеме!

Ответ 1

у нас была та же проблема и обнаружена уязвимость Apache:

important: Apache HTTP-запрос, анализирующий пробельные дефекты CVE-2016-8743 https://httpd.apache.org/security/vulnerabilities_24.html

Эти дефекты адресуются с выпуском Apache HTTP Server 2.4.25 и координируются новой директивой;

HttpProtocolOptions Strict

который является поведением по умолчанию 2.4.25 и выше. При переключении с поведения "Строгое" на "Небезопасное" поведение некоторые из ограничений могут быть смягчены, чтобы некоторые недействительные клиенты HTTP/1.1 могли взаимодействовать с сервером, но это снова представит возможность проблем, описанных в этой оценке. Обратите внимание, что ослабление поведения до "Небезопасного" по-прежнему не позволит использовать исходные ЦТЛ, отличные от HTAB (если разрешено), но не позволит выполнять другие требования RFC, например, ровно два символа SP в строке запроса.

Таким образом, директива HttpProtocolOptions Unsafe может быть вашим решением. Мы решили не использовать его.

Ответ 2

Вы можете поместить обратный прокси какой-то тип перед Apache и иметь этот дескриптор, преобразующий запрос в нечто подходящее для Apache. Возможно, будет работать Larn Cache, который также может работать как HTTP-процессор или NGINX. Другим вариантом может быть небольшое приложение Node.js, чтобы принять входной сигнал и преобразовать его в что-то более выгодное для вас, когда он будет подключен к серверному серверу.