Aus gegebenem Anlaß stelle ich hier mal zwei Möglichkeiten vor, um Webangebote von einer unsicheren auf eine relativ sichere Übertragung umzuleiten.
Bei HTTP handelt es sich um ein Protokoll zur Datenübertragung zwischen zwei Rechnern, nämlich dem Webserver auf der einen und dem Client auf der anderen Seite.
HTTPS erweitert dieses Protokoll um eine sichere Verbindung zwischen den Rechnern aufzubauen. Dabei werden die Daten mit SSL verschlüsselt, damit sie von außen nicht abgehört werden können.
In meinem konkreten Fall ist es jetzt so, dass ich eine Administrationsoberfläche im Hintergrund einer Webseite betreibe, die verschiedenen Mitarbeitern Zugriff auf ihre persönlichen Administrationsbereiche. Dabei macht es natürlich Sinn, die übermittelten Daten auch zu verschlüsseln.
Dazu habe ich nun zwei (eigentlich nur anderthalb) Lösungen im Angebot:
- Umleitung per mod_rewrite:
Ich lege in meinem Administrationsverzeichnis eine Datei .htaccess an bzw. ergänze eine bestehende .htaccess-Datei mit folgedem Inhalt:RewriteEngine On RewriteCond %{SERVER_PORT} =80 RewriteRule ^(.*)$ https://www.meinedomain.de/$1 [R=301,L]
Update 15.05.2006
Folgendes ist noch universeller einsetzbar:RewriteEngine On
RewriteCond <span>{SERVER_PORT} !^443$
RewriteRule (.*) https://</span>{SERVER_NAME}%{REQUEST_URI}Update – Ende.
Damit werden alle Anfragen, die nicht unter HTTPS laufen dorthin umgeleitet.
Diese Methode hat den großen Vorteil, dass auch Direktlinks auf eine Administrationsseite umgeleitet werden und dass die angesurfte Seite auch nach der Umleitung erhalten bleibt. - Umleitung per PHP:
Eine Umleitung ist auch per PHP möglich, erfordert allerdings, dass der Code zu Beginn jeder Seite ausgeführt werden müßte. Ein direkter Link zu einer Unterseite würde sonst die Umleitung ignorieren.header("Location: http" . ($_SERVER["HTTPS"]!='on'?<a href=""">s</a>") . "://".$_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']) ."/".$relative_url);
Fazit
Wer auf Nummer sicher gehen möchte und mod_rewrite auf seinem Server nutzen kann sollte diese an sich recht einfache aber sichere Variante wählen.
Steht nur PHP zur Verfügung könnte man sich noch mit Sessions und Referrern behelfen. Bei Interesse daran bitte einfach einen Kommentar posten.