Tom: Wie gestalte ich ein sicheres Loginsystem? (Im Detail)

Beitrag lesen

Hello,

Mit Session-IDs kann man *auch* Authentifizierung umsetzen, muss es aber nicht. Dazu wird ein Loginstatus in der Session gespeichert. Nach erfolgter Anmeldung mit Username/Passwort oder sonst einem Token gelten sämtliche Requests, die die Session-ID übermitteln, als »beglaubigt«.

Der "Loginstatus" muss nicht in die Sessiondatei geschrieben werden. Man kann ihn auch bei jedem Request neu ermitteln, z.B. mit Hilfe der Datenbank. Das ist zu empfehlen, da man dadurch requestbasiert reagieren kann und nicht nur sessionbasiert.

Das alles gibt es bei HTTP Auth nicht, weil hier eine Authentifizierung für einen einzelnen Request stattfindet.

Nur weil PHP auf Anhieb keine Funktionen dafür bereit stellt, kann man nicht behaupten "das gibt es nicht". Selbstverständlich kann man auch auf Auth-Basic eine Session aufbauen. Mit etwas Getrickse kann man sogar die Sessionfunktionen von PHP dafür verwenden und muss nicht _alles_ selber stricken.

Man muss sich nur entscheiden, was man will.

Idendifizierung mit integrierter (Teil-)Authorisierung
daran dann eine Sessiondatei ankoppeln

oder

erst eine Sessiondsatei eröffnen
und dann mittels Identifikation eine (Teil-)Authentifizierung durchführen.

Unter "Session" versteht man üblicherweise Identifikation + Authorisierung + Datenzuordnung

Was PHP als "Session" bezeichnet, ist nur die Sessiondatei + Identifikation

Der Nachteil von Loginname/Passwort gegenüber Auth-Key ist ja in
<[link:http://www.w3.org/2001/sw/Europe/events/foaf-galway/papers/fp/token_based_authentication/>
lang- und breitgelatscht worden.

Ein weiterer Nachteil von Auth-Basic ist, dass eine "Abmeldung" nur mittels Änderung des (Usernames oder) Passwortes möglich ist (Usernamen ändern wird nicht empfohlen!).

Alternativ kann man nur alle Browserfenster schließen.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com