• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Sessionverwaltung bei einem PHP Loginsystem

R

rico2009

Guest
Hi,

ich wollte man nachfragen, wie ihr mit Session bei euren Projekten umgeht. Konkrekt geht es um ein Loginsystem, welches im Moment 3 Sessions (ID,Name,Rechte) generiert. Ansich alles super. Nun dachte ich mir, es ist bestimmt sicherer wenn nur eine Session generiert und vorbehalten wird. (z.B. Eine zufällige User-Session-Id)

Nach weiterer Überlegung ist dies aber eigentlich überflüssig, denn die Session werden ja serverseitig generiert und vorbehalten. Also kann der normale User (Hacker und andere Kriminelle mit zu viel Freizeit mal ausgenommen) diese nicht ansehen oder verändern. Außerdem müsste man dann immer wenn man eine andere Information benötigt (z.B. die Berechtigung des eingeloggten Benutzers) eine Datenbank Abfrage starten und das kostet Zeit.


Wie seht ihr das bzw. wie habt ihr euer Loginsystem realisiert?


Gruß
 
Konkrekt geht es um ein Loginsystem, welches im Moment 3 Sessions (ID,Name,Rechte) generiert. Ansich alles super. Nun dachte ich mir, es ist bestimmt sicherer wenn nur eine Session generiert und vorbehalten wird. (z.B. Eine zufällige User-Session-Id)
Jeder User erhält genau eine Session, die durch eine eindeutige session-id gekennzeichnet ist.
Eine Notwendigkeit, die im Sessionarray $_SESSION gespeicherten Informationen klein zu halten, besteht nicht.
Für weitere Informationen empfehle ich die Einführung zu Sessions im PHP-Manual mal gründlich durchzuackern.

LG jspit
 
Jeder User erhält genau eine Session, die durch eine eindeutige session-id gekennzeichnet ist. [...]
Danke für deine Antwort. Das ist mir alles bekannt, ich wollte eigentlich nur mal in die Runde fragen, wie´s andere so machen. Als Ideensammlung für weitere Projekte sozusagen...
 
Hast du jetzt eine Session-ID oder drei? Oder hast du drei Einträge in deinem Sessionarray?

Ich denke mal, dass sich ein DB-Zugriff von einem File-Zugriff für die Sessioneintrage in der Performance nicht groß unterscheiden, wenn der DB-Server nicht extern ist. V.A. wenn du die DB sowieso für irgendwas benötigst.
 
Im Moment habe ich 3 Einträge in meinem Session-Array.

Ich dachte mir nun, was wäre wenn ich nur noch einen Eintrag hätte (sagen wir eine User-Session-Id) und über diese die anderen Daten bei Bedarf hole. (Ist nur eine rein fiktive Überlegung im Zuge der Systemverbesserung.)
 
Ich hätte auch eine Frage dazu: wenn ich OHNE der PHP-Session speichern möchte, dass ein User eingeloggt ist, wie mache ich das dann am Besten? Außerdem soll dieser auch die Möglichkeit haben, für z.B. einen Monat angemeldet zu bleiben.
 
Zuletzt bearbeitet:
Warum willst du es ohne serverseitig Session machen? Den Loginstatus musst du immer irgendwo auf dem Server speichern. Du musst dafür natürlich nicht das System von PHP verwenden, sondern kannst dir selbst etwas zusammenbasteln, dass dir aus einem Token auf der Serverseite den Status des Nutzers läd' (ob jetzt aus einer DB oder aus einer Datei ist da nebensächlich). Aber warum?
 
Sessions laufen auch meistens über Cookies... Wenn die Session-ID in der URL steht, kann sehr schnell mal durch copy&paste an Stellen kommen, wo sie nicht hin soll.
 
Ja, aber funktioniert das auch für einzelne User? Weil es soll ja nicht generell so lang gültig sein, sondern nur, wenn man die Option wählt...
 
Soweit ich weiß (hab' das selber noch nicht ausprobiert/getestet, da ich diese "remember me"-Funktionalität für eine Sicherheitslücke halte), kann man das gezielt steuern.
 
Mein Login-System erzeugt zwar aus den Userdaten die zum einloggen benötigt werden Sessions, aber das System weiter als Funktion arbeitet, ich vorher alle Eingaben überprüfe, keine Sessions in der URL nutze, und weitere Maßnahmen zum Schutz der Datenbanken und damit der Userdaten getroffen habe (ja auch die User werden mit jedem Aufruf einer Seite neu validiert) ist es einem Hacker noch schwerer meine Seite zu entern.

Das bisschen"mehr Zeit" sollte man sich einfach nehmen!
 
Also ich habe es folgendermaßen gelöst:
-wird beim Login die "angemeldet bleiben"-Option gewählt, wird zusätzlich zur Session ein Cookie gesetzt
-dieses Cookie hat als Inhalt einen aus der DB gelesenen, zufällig erzeugten 100-Zeichen langen String
-bei jedem Login/Logout wird dieser String neu erzeugt

Es ist unmöglich, den String zu erraten/errechen. Falls ihr noch irgendwelche (realistischen!) Schwachstellen an diesem Konzept finden sollte, meldet euch bitte!
 
@dertypdernixkan: ich hab' das Deutsch deines Beitrages wirklich überhaupt gar nicht verstanden...

@Julian: das ist jetzt exakt das gleiche wie eine Session-ID... wenn du willst, kannst du die auch in PHP per Hand bei jedem Login/Logout ändern und auch so lange gestalten, wie du willst. Hat nur den Nachteil, dass sich ein Nutzer nicht bei zwei Rechner gleichzeitig anmelden kann - z.B. mit seinem Desktop und einem Smartphone...
 
das ist jetzt exakt das gleiche wie eine Session-ID... wenn du willst, kannst du die auch in PHP per Hand bei jedem Login/Logout ändern und auch so lange gestalten, wie du willst. Hat nur den Nachteil, dass sich ein Nutzer nicht bei zwei Rechner gleichzeitig anmelden kann - z.B. mit seinem Desktop und einem Smartphone...

Ja, ist im Grunde das Gleiche, nur dass ein User auch über längere Zeit angemeldet bleiben kann. Wählt man die Option nicht, wird wie gesagt auch kein Cookie gesetzt, sondern nur eine PHP-Session. Die Option mit dem Cookie wird nur ZUSÄTZLICH verwendet, wenn man "Angemeldet bleiben" wählt - also eine Art "Remember me"-Funktion...
 
Zurück
Oben