Sicherer Login ohne Persistenz

Bash, Shell, PHP, Python, Perl, CGI
simcen
RSAC
Posts: 338
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Sicherer Login ohne Persistenz

Post by simcen » 2007-02-21 13:58

Hallo Zusammen

Ich versuche eine Benutzerauthentifizierung zu realisieren, allerdings ohne Session-Tabellen in einer MySQL-Datenbank oder Flat-Files zu verwenden.
Die Abfrage mache ich mit php-ldap an ein MetaDirectory.
Diese Abfrage möchte ich allerdings auf eine Abfrage beim Login beschränken.

Sprich: Bei einem erfolgreichen Login sollte irgendwie die Information über den Erfolg gespeichert werden und vom Script auf dem Server auf seine Gültigkeit überprüft werden können.

Wie stelle ich das am besten an?
phpMyAdmin macht es scheinbar so wie ich es möchte, habe den Code mal angeschaut aber verstehe ich aufgrund hoher Komplexität kaum.

Gruss und Danke für eure Hilfe
Simon

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Sicherer Login ohne Persistenz

Post by Roger Wilco » 2007-02-21 14:24

simcen wrote:Wie stelle ich das am besten an?
HTTP ist stateless, d. h. du musst den Status der Authentifizierung irgendwie selbst speichern, in einer Session oder mit Cookies, wobei letztere natürlich beliebig manipuliert werden können, weil clientseitig gespeichert.
simcen wrote:phpMyAdmin macht es scheinbar so wie ich es möchte, habe den Code mal angeschaut aber verstehe ich aufgrund hoher Komplexität kaum.
Ja, mit Cookies oder HTTP-Auth, deren Ergebnis der Browser speichert.

simcen
RSAC
Posts: 338
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: Sicherer Login ohne Persistenz

Post by simcen » 2007-02-22 18:52

*patsch*
Wieso nicht gleich so... Session-Variablen sind für den Client gar nicht zugänglich. Richtg?!

Habe mal versuchsweise folgende Lösung implementiert:

- Hash aus UserID
- Hash aus Passwort
- Hash aus einem blowfish_secret (wie bei phpMyAdmin)
- Hash aus allen drei Hashen plus IP-Adresse

Alle Hashes speichere ich in der Session und vergleiche serverseitig den 4. Hash mit dem generierten.

Damit stelle ich eine weitere Hürde neben einer Sniffing-Attacke noch die IP-Adresse spoofen zu müssen.

Ist das sicher genug? Bedenken?

PS: Autologin usw. will ich nicht, desshalb auch keine Cookies.
Gruss
Simon