28.3 Ein Blick über den Tellerrand  
Wenn serverseitige Mittel zur Verfügung stehen, ist das Problem mit den geschützten Seiten schon etwas anderes; auf der Serverseite lässt sich der Zugriffsschutz viel einfacher und auch besser realisieren.
Wir werden im Folgenden Lösungen für die Skriptsprache PHP sowie eine Lösung für den Apache Web Server betrachten. Damit müssten Sie auf fast jedem besseren Server einen einfachen Zugriffsschutz realisieren können. Wenn Ihr Hoster keine Möglichkeit bietet, serverseitige Skriptsprachen einzusetzen, können Sie diesen Abschnitt getrost überspringen.
28.3.1 PHP  
PHP bietet ein so genanntes eingebautes Session-Management. Damit ist es möglich, einen Benutzer auch während mehrerer Sitzungen zu behalten. Rein technisch geschieht das so, dass bei jedem Seitenaufruf in der URL eine eindeutige, standardmäßig 32 Zeichen lange Session-ID übergeben wird, die den aktuellen Benutzer identifiziert. Wenn der Client Cookies unterstützt, umso besser: Dann wird die Session-ID in einem Cookie übergeben.
Auf der Serverseite können Sie abspeichern, ob sich der Benutzer korrekt eingeloggt hat oder nicht. Der Benutzer selbst sieht nur die Session-ID, aber nicht die entsprechende Variable. Er kann es also nicht mit ein wenig Aufwand erreichen, dass er die Variable »eingeloggt ja/nein« von Hand setzen kann, wie das bei der Cookie-Lösung in Abschnitt 28.2 noch der Fall war.
Die Loginmaske sieht folgendermaßen aus: Der Benutzer muss ein Passwort in das Formular eingeben, das dann auf der Serverseite mit dem korrekten Passwort verglichen wird. Da der serverseitige Code nicht an den Benutzer übermittelt wird, können Sie hier das Passwort direkt hineinschreiben.
Wenn das Passwort korrekt ist, wird in der aktuellen Session (Sitzung) abgespeichert, dass der Loginversuch erfolgreich war.
<?php
session_start();
if (isset($_POST['Submit']) &&
$_POST['Submit'] == 'Login') {
if (isset($_POST['pass']) &&
$_POST['pass'] == 'geheim') {
$_SESSION['Login'] = 'ok';
}
header("Location: geheim.php?" . session_name()
. "=" . session_id());
}
?>
<html>
<head>
<title>Top Secret</title>
</head>
<body>
<h1>Passwortabfrage</h1>
<form method="post">
<input type="password" name="pass" />
<input type="submit" value="Login" name="Submit" />
</form>
</body>
</html>
Auf den Unterseiten müssen Sie nur noch sicherstellen, dass Benutzer, die noch nicht eingeloggt sind, wieder hinausgeworfen werden.
<?php
session_start();
if (!isset($_SESSION['Login']) ||
$_SESSION['Login'] != 'ok') {
header('Location: login.php');
}
?>
<html>
<head>
<title>Top Secret</title>
</head>
<body>
Geheime Informationen ...
</body>
</html>
28.3.2 .htaccess  
Der am weitesten verbreitete Webserver, der Apache, sucht unter UNIX und Linux in jedem Verzeichnis nach einer Datei namens .htaccess (unter Windows ist der Dateiname nicht gültig, dort müssen Sie einen anderen Dateinamen konfigurieren und einsetzen). In dieser Datei kann der Webmaster Zugriffsbeschränkungen für eine Website einrichten.
Eine solche Datei sieht folgendermaßen aus:
AuthUserFile /usr/home/apache/www/htaccess/.htpasswd
AuthName Top Secret
<Limit GET POST>
require valid-user
</Limit>
Damit wird Folgendes festgelegt:
|
Das aktuelle Verzeichnis ist geschützt. |
|
Es dürfen nur autorisierte Benutzer auf Dateien in diesem Verzeichnis zugreifen (require valid-user). |
|
Der Name des Bereichs, der auch in den Dialogfenstern zur Passworteingabe steht, ist »Top Secret« (AuthName Top Secret). |
|
Die autorisierten Benutzer und deren Passwörter (natürlich verschlüsselt) stehen in der Datei /usr/home/www/htaccess/.htpasswd. |
Nun fehlt Ihnen nur noch das Wissen, wie Sie die Benutzernamen und Passwörter in die Datei .htpasswd schreiben können. Auf Konsolenebene geht das ganz einfach:
htpasswd .htpasswd Benutzername
So können Sie einen neuen Benutzer anlegen oder einen bestehenden Nutzer modifizieren.1 Die Informationen werden dann zeilenweise in die Datei .htpasswd geschrieben. Die Passwörter werden dabei verschlüsselt, so dass auch das Auslesen der Datei noch keinen Zugriff auf den geschützten Bereich ermöglicht.
1 Beim erstmaligen Erstellen der Passwortdatei müssen Sie noch den Schalter –c angeben, damit die Datei erzeugt wird.
|