所以,我想在Apache日志中logging相当于会话cookie(称为session_id )的信息。 我不想简单地把cookie放在日志格式( %{sid}i )中,因为日志文件的破坏会导致会话劫持。
在我看来,最合理的想法是logging会话cookie的散列。
什么是最好的方式来实现呢?
是的,散列可以在第二个cookie中设置,与会话cookie相同,但是依赖于在每个请求上validation散列,或者信任客户端不会修改第二个cookie – 我宁愿哈希计算在服务器端完成,而不需要传送给客户端;
是的,我非常肯定可以写一个Apache模块,例如,在每个请求上随时添加一个环境variables,但是我有点担心这样做,因为我缺乏必要的专业知识;
编辑 :虽然依赖于版本的Apache 2.4中引入的function的答案将是翔实的,我个人需要一个答案,将在2.2上工作,因为我不负责服务器的升级。
pipe道日志可能是克服CustomLog / LogFormat限制的最佳select:它“增加了日志logging的灵活性,而无需向主服务器添加代码”。
在Apache 2.4中引入了一个名为ap_expr的新function。 它允许在Apacheconfiguration中的string上下文中的函数,例如
# 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”) 这留下了pipe道日志,因为设置另一个包含校验和的cookie不是一个选项。 如果可以接受的话,ap_expr会有帮助。