Secure Cookies unter Apache

Versionsinformation

Die Anleitungen in diesem Dokument wurden auf Basis folgender Softwareversionen erstellt.

Secure Flag

Falls eine Website über HTTP und HTTPS erreichbar ist, werden gespeicherte Cookies bei Zugriff über HTTP unverschlüsselt versendet. D.h. selbst falls ein User normalerweise auf eine Seite nur über HTTPS zugreift, kann ein Angreifer seine Cookies unverschlüsselt abgreifen, sobald er es schafft, dass der User auf die HTTP Version zugreift. Um dies zu verhindern kann das Secure Flag eines Cookies gesetzt werden. Dadurch wird ein Cookie nur noch bei einer HTTPS Verbindung übertragen. Dies bedeutet jedoch auch, dass das Cookie über eine HTTP Verbindung nicht mehr zur Verfügung steht.

HTTP Only Flag

Wenn ein Cookie von einem Server zu einem Client geschickt wird, ist es ohne gesetztes HTTP Only Flag möglich, über Java Script Cookie Informationen auszulesen. Falls es einem Angreifer folglich gelingt, auf einem Client Programm Java Script auszuführen, hat er auch Zugriff auf sämtliche Cookies. Um dies zu verhindern kann das HTTP Only Flag gesetzt werden. Ein Browser, welcher dieses Flag unterstützt, wird dadurch verhindern, dass Cookie Informationen durch Client-seitigen Code ausgelesen werden können.

Setzen des Secure & HTTP Only Flags für alle Cookies

Im Folgenden wird beschrieben, wie es möglich ist, die angesprochenen Flags global für Cookies zu setzen. Es besteht auch die Möglichkeit das Flag in der Applikationssoftware individuell für spezifische Cookies zu setzen.

Folgender Befehl muss abhängig von der Apache Version in die httpd.conf bzw. apache2.conf (normalerweise unter /etc/apache2/) eingefügt werden:

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

Im Anschluss muss der Apache Webserver neugestartet werden um die aktualisierte Konfiguration zu laden. Zwecks Modularität macht es allerdings Sinn, den Code in einer eigenen bzw. bereits vorhanden Konfigurationsdatei einzufügen (z.B. security.conf im Unterordner apache2/conf-available/). Dadurch kann man flexibel die Konfiguration ein und ausschalten falls nötig (a2enconf bzw. a2disconf).

Weitere Versionsinformationen

Hier erfolgt der Eintrag in die httpd.conf Datei im Verzeichnis /etc/httpd/conf bzw. in einer eigenen Konfigurationsdatei im Verzeichnis /etc/httpd/conf.d