User-Login - wie implementieren?

Moin,

ich habe vor, eine Webseite mit einem User-Login auszustatten, so dass bestimmte Inhalte nur nach Anmeldung genutzt werden können. Das ganze soll Server-seitig ablaufen, so dass am Ende wahrscheinlich Perl-CGI oder PHP zum Einsatz kommen werden.

Meine Frage:

Ich weiss bis jetzt noch gar nix über so eine Login-Geschichte, würde aber gerne mal die Grund-Strukturen kennen lernen, sprich, erfahren, wie man sowas üblicherweise realiesiert. Das geht ja schon damit los, anhand welcher Parameter (neben Name+Passwort) die Identifikation erfolgt (Browser-ID, IP-Adresse, …?) und wie ein Login-Timer gestrickt wird (um z.B. einen User nach 1 Stunde Untätigkeit als „logged off“ zu deklarieren).

Keine Ahnung, wie viele Wege da nach Rom führen, aber der breiteste würde mir für den Anfang reichen :wink: Gibt´s da irgendwo Tutorials oderso? Bei SELFHTML habe ich zumindest beim ersten Suchen nichts dazu gefunden.

Danke,
Kristian

Ich weiss bis jetzt noch gar nix über so eine
Login-Geschichte, würde aber gerne mal die Grund-Strukturen
kennen lernen, sprich, erfahren, wie man sowas üblicherweise
realiesiert. Das geht ja schon damit los, anhand welcher
Parameter (neben Name+Passwort) die Identifikation erfolgt
(Browser-ID, IP-Adresse, …?) und wie ein Login-Timer
gestrickt wird (um z.B. einen User nach 1 Stunde Untätigkeit
als „logged off“ zu deklarieren).

Naiver Ansatz:

Wenn ein Benutzer einloggt, wird eine Sitzung (Session) erzeugt, die durch einen bestimmten Schlüssel (Session-ID) und den Benutzer eindeutig identifiziert wird. Trivialerweise könnte man dazu zB den Login-Namen und eine fortlaufende Nummer nehmen, das könnte man aber leicht erraten und so Sitzungen „entführen“. Man könnte als SID zB auch den SHA-256-Hash von Benutzername, Datum und einer zufälligen Zahl nehmen. Das wäre dann schwieriger zu erraten, aber sowas ist relativ einfach zu machen und man sollte sich am Anfang nicht damit aufhalten.

Damit können diverse Eigenschaften einer Sitzung, wie zB Beginn, Verlauf, gewählte Optionen oder was auch immer irgendwo gespeichert werden, zB in einer Datenbank.

Bei jeder Aktion des Benutzers wird geprüft, ob die letzte Aktion der Sitzung länger als de Timeout zurückliegt. Wenn ja fliegt der Benutzer erstmal raus, wenn nein wird die Zeit neu gesetzt und die Sitzung geht weiter.

Irgendwo im Hintergrund sollte regelmäßig nach abgelaufenen Sitzungen gesucht werden, weil du sonst irgendwann eine Unmenge abgelaufener Sitzungen rumfallen hast deren Benutzer sich nie wieder gemeldet haben.

Hallo,

die kurze Antwort ist: mit Cookies, in denen Session-Identifer gespeichert werden. Lies mal hier:
http://search.cpan.org/~sherzodr/CGI-Session-4.03/li…

können. Das ganze soll Server-seitig ablaufen, so dass am Ende
wahrscheinlich Perl-CGI oder PHP zum Einsatz kommen werden.

Wenn du es halbwegs sicher machen willst, brauchst du cookies (und/oder https). Wenn du es noch sicherer haben willst, brauchst du noch javascript auf der Client-Seite. Aber so paranoid sind nicht viele…

realiesiert. Das geht ja schon damit los, anhand welcher
Parameter (neben Name+Passwort) die Identifikation erfolgt
(Browser-ID, IP-Adresse, …?) und wie ein Login-Timer
gestrickt wird (um z.B. einen User nach 1 Stunde Untätigkeit
als „logged off“ zu deklarieren).

Man verwendet überlicherweise Cookies statt Browser-ID und IP-Adresse. D.h. erst Name+Passwort abfragen, dann bei allen weitern Abfragen den Cookie. Das mit dem timeout macht unter Perl das Modul CGI::Session.

Noch Fragen?

Grüße,
Moritz

Danke soweit

Naiver Ansatz:

Ich weiß jetzt (noch) nicht, ob der Ansatz naiv ist :wink:
Aber danke für die Hinweise, ich werde mir die merken!

Kristian

Moin Moritz,

danke für die Ausführungen und den Link! Ich denke, die Eckpunkte sind damit und mit dem anderen Posting gesetzt. Jetzt muss ich mal gucken, was ich so an Details finde und anfangen zu basteln.

Ich sehe eine Menge Arbeit auf mich zukommnen :wink:)

Aber soll nur ´ne kleine Sache werden. JavaScript wird daher nur für andere Zwecke verwendet :wink:

Kristian