mod_rewrite und die falsche SSL-Sicherheit

Immer wieder kommt es mir unter die Augen: Administratoren, die sich mit der von ihnen betreuten Software nicht auskennen und SSL für eine Anwendung benötigen, die überhaupt nicht für die Verwendung von SSL ausgelegt ist.

Häufig wird in solchen Situation beherzt und völlig ahnungslos auf eine Lösung auf Basis des Apache-Moduls mod_rewrite zurückgegriffen. Solche Lösungen sehen dann meist wie diese hier aus:

1
2
3
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Was soll schon passieren? Es funktioniert doch wie es soll! Fall erledigt! Denkt sich zumindest der unbedarfte Administrator. Diese Aussage sollte er sich allerdings zweimal überlegen, denn sie hat einen gravierenden Fehler: die Software.

Wenn man sich Software wie z.B. WordPress anguckt, dann fällt einem eine Sache auf: Auch für Links, die auf andere Bereiche der gleichen Seite zeigen, werden vollständige URLs generiert - inklusive der Protokollbezeichnung. Bei Software, die sich nicht darum kümmert, ob sie gerade via SSL aufgerufen wird, steht dort bei jedem Link ein "http://". Das heißt: Jedes Mal, wenn man einen Link anklickt, wird eine Anfrage per HTTP an den Server gestartet, der sieht, dass er auf HTTPS umlenken soll und tut das dann auch entsprechend. Und genau dort ist der Fehler:

Umlenken von HTTP auf HTTPS

Ihr ahnt es sicherlich: Bei diesem Aufruf der ungesicherten Seite werden bereits alle Informationen unverschlüsselt übertragen - egal, ob Cookies, URL-Parameter, Formularinhalte oder weiß der Kuckuck. Mit anderen Worten: Es werden lediglich die Informationen, die vom Server verschickt werden, wirklich immer verschlüsselt. Die Daten, die der User versendet, gehen jedes Mal doppelt über die Leitung, einmal unverschlüsselt und einmal verschlüsselt. Wie schnell das wiederum zu Problemen führen kann, sollte spätestens seit dem Erscheinen des Firefox-Plugins Firesheep bekannt sein.
Falsche Grüße, Kenny

2 Kommentare » Schreibe einen Kommentar

    • Die Lösung lautet, dass die Anwendung entsprechend für HTTPS vorbereitet sein muss. Entweder, indem sie so umkonfiguriert/-geschrieben wird, dass sie statt HTTP-Links nur noch HTTPS-Links ausgibt oder aber, indem die Anwendung direkt relative URLs verwendet.

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.