Назад | Перейти на главную страницу

Как записать хэш файла cookie сеанса с помощью Apache HTTPD?

Итак, я хочу зарегистрировать информацию, которая эквивалентна cookie сеанса (называемому session_id) в журналах Apache. Я не хочу просто помещать cookie в формат журнала (%{sid}i), потому что компрометация файла журнала позволит захватить сеанс.

На мой взгляд, наиболее разумной идеей было бы регистрировать хэш файла cookie сеанса.

Как лучше всего этого добиться?

РЕДАКТИРОВАТЬ: Хотя ответ, основанный на функциональности, представленной в версии Apache 2.4, будет информативным, мне лично нужен ответ, который будет работать в версии 2.2, поскольку я не отвечаю за обновление серверов.

Трубопроводные бревна может быть лучшим вариантом для преодоления ограничений CustomLog / LogFormat: он «увеличивает гибкость ведения журнала без добавления кода на главный сервер».

В Apache 2.4 появилась новая функция под названием ap_expr вводится. Он позволяет использовать функции в строковом контексте в конфигурациях Apache, например

# Function example in string context
Header set foo-checksum "expr=%{md5:foo}"

Однако это не работает в CustomLog и контекст LogFormat:

  • %{md5:foo} приводит к -
  • %{md5:%{sid}C} приводит к -}
  • %{md5:sid}C буквально cookie "md5: sid" вместо md5 ("sid")

Это оставляет нас с конвейерными журналами, поскольку установка другого файла cookie, содержащего контрольную сумму, не была вариантом. Если бы это было приемлемо, было бы полезно использовать ap_expr.