Внутренний сервер 500 - AH02429: Имя заголовка ответа

ОС Ubuntu Ubuntu 16.04.2 LTS Apache / 2.4.18 Perl v5.22.1

Итак, у меня есть код на Perl, который читает базу данных mysql, а затем создает динамическую веб-страницу. Код отлично работает годами. Неделю назад мой клиент звонит и говорит, что получает сообщение внутреннего сервера 500. Я смотрю, все в порядке, но когда я пытаюсь загрузить страницу, я получаю ошибку 500. В журнале ошибок apache есть такая ошибка:

[Вт, 30 мая, 22:16: 13.144199 2017] [http: error] [pid 12487] [client 99.99.99.99:55628] AH02429: Имя заголовка ответа «

Кто-нибудь видел это или имеет какое-либо представление о причинах этого?

4
задан 31 May 2017 в 05:42
4 ответа

Как говорит @GroGz, эта проблема почти наверняка вызвана (или, скорее, обнаружена ) путем исправления CVE-2016-8743 - синтаксический анализ заголовков HTTP стал намного более строгим в обновлении Apache, выпущенном 20 декабря 2016 г. (подробности на https://httpd.apache.org/security/vulnerabilities_24 .html ). Скорее всего, ваш сценарий Perl использует модуль CGI :: Carp , который включает подпрограмму «warningsToBrowser». Эта подпрограмма помещает предупреждения, вызванные проблемами кода, в комментарии HTML, встроенные в выходные данные вашей программы, а не просто записывает их в журналы HTTPD. Эта подпрограмма запускается следующим образом:

warningsToBrowser(1);

Если вы запускаете ее до того, как заголовки HTTP будут отправлены полностью, вы увидите ошибку, аналогичную описанной вами.

Простое исправление - поиск любого вхождения в вашем коде of:

warningsToBrowser(1);

и измените его на:

warningsToBrowser(0);

При этом предупреждающие сообщения будут отправляться только на STDERR (как и большинство серверов HTTPD, Apache направит STDERR в журнал ошибок сервера). Поскольку вы говорите «код отлично работает в течение многих лет», вероятно, предупреждения в любом случае не слишком серьезны. См. http://perldoc.perl.org/5.8.9/CGI/Carp.html#MAKING-WARNINGS-APPEAR-AS-HTML-COMMENTS для получения дополнительной информации.

1
ответ дан 3 December 2019 в 02:56

Проблема возникает из-за пустого списка заголовков, который в symfony 1.4 выглядит как

array(1) {
 [""] => string(9) "text/html"
}

. Проблема может быть решена путем изменения строки 357 в lib / response / sfWebResponse.class.php на

foreach ($this->headers as $name => $value)
{
  if($name === "")
    $name = "Content-type";

  header($name.': '.$value);

  [...]

На самом деле я не знаю, почему не задано собственное имя, но проект слишком стар, чтобы копаться в структуре.

-1
ответ дан 3 December 2019 в 02:56

У вас есть заголовок ключа с недействительными символами, это не было проблемой до тех пор, пока не было исправлено состояние безопасности CVE-2016-8743.

https://blog.tigertech.net/posts/apache-cve-2016-8743/

В моем случае былApache + PHP и пробел до ":" типа "X-CUSTOM-KEY :", и я не нашел другого решения, кроме как изменить заголовок.

.
6
ответ дан 3 December 2019 в 02:56

У меня была эта проблема с некорректным Java-приложением, которое возвращало «Местоположение: http://foo.bar \ n» (обратите внимание, что \ n в конце).

У меня не было доступа к исходному коду приложения для решения проблемы, поэтому мне пришлось найти обходной путь, сказав apache исправить заголовки с помощью mod_header

Решение было:

      Header edit Location "\n$" ""

Я провел несколько тестов, создал приложение, возвращающее заголовок , и решил его на apache с помощью следующей директивы:

      Header always unset "<!-- warning"

Если вы не можете исправить приложение, apache может удалить / исправить заголовок за вас.

1
ответ дан 3 December 2019 в 02:56

Теги

Похожие вопросы