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

Beitrag lesen

Der "Loginstatus" muss nicht in die Sessiondatei geschrieben werden.

Muss man nicht – habe ich auch nicht behauptet –, aber üblich ist es. Dafür sind Sessions gedacht.

Man kann ihn auch bei jedem Request neu ermitteln, z.B. mit Hilfe der Datenbank.

Man kann sich auch auf den Kopf stellen und dabei eine Limo trinken.

Das ist zu empfehlen, da man dadurch requestbasiert reagieren kann und nicht nur sessionbasiert.

Diese Unterscheidung halte ich für verwirrend – das hatten wir bereits und ich habe alles nötige dazu gesagt.

Nur weil PHP auf Anhieb keine Funktionen dafür bereit stellt, kann man nicht behaupten "das gibt es nicht".

Nein, es ist KONZEPTIONELL nicht möglich, dass HTTP Auth die BESAGTEN Eigenschaften von Sessions erfüllt. Welche und warum, habe ich beschrieben. Ich werde es nicht wiederholen, da ich mich, wie ich finde, recht klar ausgedrückt habe.

Selbstverständlich kann man auch auf Auth-Basic eine Session aufbauen.

Das wäre eine »Session«, die nie wirklich anfängt und nie wirklich endet. Der Anfang wäre der erste authentifizierte Request, das Ende kann höchstens heuristisch mit einem Timeout bestimmt werden. Ein aktives Beenden der Session ist nicht möglich, wie du auch schreibst.

Also ist es keine wirkliche Session, sondern bloß ein Log, das den letzten authentifizierten Request verzeichnet.

Für Mitlesende, die sessionbasierte Logins umsetzen wollen, sind solche praxisfernen, rein hypothetischen Diskussionen bloß verwirrend. Noch einmal: HTTP Auth ermöglicht Authentifizierung, aber keine Sessions im besagten Sinne.

Mathias

[1] »What are Sessions? – HTTP is a stateless protocol. Sessions make it stateful.« http://guides.rubyonrails.org/security.html#what-are-sessions-questionmark