Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Know-how  Teil von  PHP & HTTP
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

Authentifizierung via HTTP




Es besteht die Möglichkeit, den Browser ein Fenster öffnen zu lassen, in dem Name und Passwort eingetragen werden müssen. Dies jedoch nur dann, wenn PHP als Modul und nicht als CGI läuft.

Die Umsetzung stellt sich recht einfach dar:

<?php
  if($PHP_AUTH_USER!="Matthias" OR $PHP_AUTH_PW!="Kannen") {
    Header('HTTP/1.1 401 Unauthorized');
    Header('WWW-Authenticate: Basic realm="Privatezone"');
    echo "Sie haben den Vorgang abgebrochen!";
    exit;
  }
?>
<html>
<head>
  <title>Privatzone</title>
</head>
<body>
<h1>Hier ist die Privatzone von </h1>
<h2>
<?php
  echo "Benutzer: ".$PHP_AUTH_USER." Passwort: ".$PHP_AUTH_PW;
?>
</h2>
</body>
</html>




Bild 8.1: Login-Fenster



Bild 8.2: Privatzone des Anwenders

Beim ersten Aufruf sind beide Variablen $PHP_AUTH_USER und $PHP_AUTH_PW nicht gesetzt. Hierdurch wird der Abschnitt der IF-Anweisung bearbeitet. In diesem werden die beiden Header zurückgegeben, die den Browser veranlassen, nach dem Benutzernamen und dem Passwort zu fragen. Die Bezeichnung für den Privatbereich können Sie nach Belieben anpassen, sämtliche übrigen Bestandteile des Headers sollten Sie genauso übernehmen. Die echo-Anweisung wird lediglich dann ausgegeben, wenn der Anwender bei der Passwortabfrage auf Abbrechen klickt oder im Falle des Internet Explorers drei Versuche, sich zu authentifizieren, misslungen sind. Dann springt der Webserver nach dem echo aus der Datei und der Rest wird nicht mehr ausgegeben. Sollte der Anwender jedoch das korrekte Passwort mit dem korrekten Benutzernamen eingeben, wird der Bereich innerhalb der IF-Anweisung nicht bearbeitet und der Rest der Datei interpretiert.

Sollten Sie auf Nummer sicher gehen wollen, sollten Sie die globalen Servervariablen $_SERVER wie folgt einbinden:


<?php
  if($_SERVER["PHP_AUTH_USER"]!="Matthias"
  OR $_SERVER["PHP_AUTH_PW"]!="Kannen") {
    Header('HTTP/1.1 401 Unauthorized');
    Header('WWW-Authenticate: Basic realm="Privatezone"');
    echo "Sie haben den Vorgang abgebrochen!";
    exit;
  }
?>
<html>
<head>
<title>Privatzone</title>
</head>
<body>
<h1>Hier ist die Privatzone von </h1>
<h2>
<?php
  echo "Benutzer: ".$_SERVER["PHP_AUTH_USER"]." Passwort: ".$_SERVER["PHP_AUTH_PW"];
?>
</h2>
</body>
</html>

Das PHP-Skript erhält über folgende Servervariablen die Anmeldedaten:

VariableWert
$_SERVER["PHP_AUTH_USER"]Benutzername
$_SERVER["PHP_AUTH_PW"]Passwort im Klartext
$_SERVER["PHP_AUTH_TYPE"]Authentifizierungstyp


Das Skript kann die Gültigkeit der so übergebenen Daten prüfen. Diese Variablen stehen Ihnen immer nur dann zur Verfügung, wenn das PHP-Skript die Authentifizierung veranlasst hat. Hat sich ein Anwender einmal am System angemeldet, werden die Anmeldungsdaten im Browser gesichert. Bei jedem Aufruf einer Resource im geschützten Bereich sendet dieser automatisch die Authentifizierungsdaten mit. Der Anwender muss sich somit nur einmal anmelden. Sie sollten jedoch beachten, dass im Authentifizierungsschema Basic das Passwort im Klartext gesendet wird. Es wäre daher ratsam, gegebenenfalls HTTPS zu verwenden, um eine sichere Übertragung zu gewährleisten.


Sicherheitsproblem

Ein weiteres Sicherheitsproblem ist zu berücksichtigen: Der Browser speichert nämlich den Benutzernamen und das Passwort, sodass die Autoren derjenigen Seiten, die man nach der Passworteingabe abruft, theoretisch das Passwort abfragen könnten. Dies kann man jedoch ganz einfach verhindern, indem man den Browser komplett beendet oder den PHP-Abschnitt wie folgt anpasst:

<?php
  if($PHP_AUTH_USER!="Matthias" OR $PHP_AUTH_PW!="Kannen") {
    Header('HTTP/1.1 401 Unauthorized');
    Header('WWW-Authenticate: Basic realm="Privatezone"');
    echo "Sie haben den Vorgang abgebrochen!";
    exit;
  } else {
    unset($PHP_AUTH_PW);
  }
?>


Variante via $_SERVER

<?php
  if($_SERVER["PHP_AUTH_USER"]!="Matthias" OR $_SERVER["PHP_AUTH_PW"]!="Kannen") {
    Header('HTTP/1.1 401 Unauthorized');
    Header('WWW-Authenticate: Basic realm="Privatezone"');
    echo "Sie haben den Vorgang abgebrochen!";
    exit;
  } else {
    unset($_SERVER["PHP_AUTH_USER"]);
  }
?>



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt