Tom: Tom - kannst Du mir dieses Beispiel erläutern?

Beitrag lesen

Hello,

welch Zufall, dass ich gerade mal reinschaue. Ich kämpfe immer noch mit Grippe o.ä. aber das Forum macht ja bekanntlich spüchtig und da muss ich trotz Bettruhe mal schauen :-)

auf der Suche nach einem guten LogIn verfahren, bin ich auf dieses von Tom gestoßen: http://forum.de.selfhtml.org/archiv/2007/4/t150774/#m981588


<?php
  if(!isset($_SERVER["PHP_AUTH_USER"]) or !isset($_SERVER["PHP_AUTH_PW"]))
  {
    Header("WWW-Authenticate: Basic realm="My Realm"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Text, der gesendet wird, wenn der Benutzer abbricht.<br />".
         "Das sollte eine vollst&auml;ndige HTML Seite sein.\n<br>";
    exit;
  }
  else
  {
    echo "Hello ".$_SERVER["PHP_AUTH_USER"]."<P>";
    echo "Du hast <b>".$_SERVER["PHP_AUTH_PW"]."</b> als Passwort eingegeben.<P>";
  }
?>

Hier handelt es sich nicht um mein "Login", sondern um eine authentifizierung des Clients durch die beiden geforderten HTTP-Parameter User und Passwort. Diese werden dann durchn das berühmte Fenster im Browser abgefragt, wenn sie nicht vorhanden sind.

Also von vorne:

Client führt Request aus ohne Zugangsdaten
  PHP-Server-Modul kann daher weder PHP_AUTH_USER noch PHP_AUTH_PW ans Script weiterreichen
  Script kann dies beiden Werte also nicht finden und löst die Header aus.
    Zusätzlich sendet es mit den Headern einen Alternativ-Text (HTML-konform!) mit, der
    vom Browser angezeigt würde, wenn dieser meint, dass es nun keinen Zweck mehr hat,
    zu probieren (klassisch nach dem dritten Fehlversuch)
  Der Browser klappt beim Empfang dieser Header ein Fenster auf, um die Werte abzufragen
  Mit dem nächsten Request sendet er sie mit.
  Wenn sie passen, wird im Script der else-Zweig ausgeführt, wenn nicht, werden wirder die
  Header gesendet.

Hier "schützt" sich das Script quasi selber gegen Benutzng.
Leider werden aber auch hier jedes Mal Passwort und Name mitgesendet im HTTP-Header
Wenn das Passwort nun nicht regelmäßig (kurzfritig) geändert wird, steigt die Wahrscheinlichkeit des unberechtigten Zugriffes durch (gelegnetliche) Mitleser des Datenverkehrs.

Es handelt sich also nicht um ein "Login".
Ein wirkliches "Login" gibt es beim verbindungslosen Protokoll ohnehin nicht.
Es handelt sich vielmehr um ein "Authenticate" oder ein (Re-)Identicate

Außerdem ist dieses Script-Stückchen nur rudimentär. Man muss schon ein wenig mehr drum herum stricken, um ein "Loginsystem" daraus werden zu lassen.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau