Так, я хочу зарегистрировать информацию, которая эквивалентна сеансовым куки (названный session_id
) в журналах Apache. Я не хочу просто помещать cookie в формат журнала (%{sid}i
) потому что компромисс файла журнала позволил бы перехват сеанса.
Самая разумная идея, по-моему, состояла бы в том, чтобы зарегистрировать хеш сеансовых куки.
Каков был бы лучший способ достигнуть этого?
Да, хеш мог быть установлен во втором cookie, в то же время, что и сеансовые куки, однако который полагается или на проверку хеша по каждому запросу или на доверие клиенту, что это не изменит второй cookie - я предпочел бы, чтобы вычисление хеша было сделанной серверной стороной, никогда не будучи переданным клиенту;
Да, я вполне уверен, модуль Apache мог быть записан в, например, добавьте переменную среды на лету по каждому запросу, но я немного опасаюсь делать это, поскольку я испытываю недостаток в необходимых экспертных знаниях;
Править: В то время как ответ, который полагается на функциональность, представленную в версии 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.