Попросите 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, чтобы принять входной сигнал и преобразовать его в что-то более выгодное для вас, когда он будет подключен к серверному серверу.