“Kleine Ursache, große Wirkung” passt bei dieser Konfigurationseinstellung ziemlich genau. Ist sie nicht gesetzt, werden bei allen gecachten Seiten die eventuell vorhandenen “set-cookie” Parameter in den Headern mit in den Cache abgelegt. Das kann fatale Folgen haben, wenn z.B. eine JSESSIONID als Cookie gesetzt wird. Wird dann eine Seite mit dem “set-cookie” aus dem Cache geladen, überschreibt diese JSESSIONID die aktuell vorhandene. Da die gecachte JSESSIONID aber einem ganz anderen Benutzer gehören könnte, ist es nun möglich, dessen Session zu übernehmen. Natürlich nur, falls dessen Session noch aktiv ist. Wenn nicht, dann gibt es zumindest einen ungewollten SessionTimedOut Fehler. Die Symptome treten allerdings auch nicht immer und nicht immer bei allen gecachten Inhalten auf, so dass der Fehler schwer reproduzierbar und auffindbar ist.
Apache mod_cache verursacht damit also ungewolltes “Session Hijacking”.
Abhilfe schafft das Setzen von “CacheIgnoreHeaders Set-Cookie”. Jeder, der mod_cache im Einsatz hat, sollte seine Konfiguration dahingehend prüfen wie diese Einstellung gesetzt ist und ob das so ausreichend ist.