Ich habe eine kleine Frage, aufwelche ich momentan keine wirkliche Lösung finde.
Ich habe seit langem ein Loginsystem. Dies Funktioniert soweit sehr gut und durch die Hilfe hier im Forum sollte das ganze auch relativ sicher sein. Nun habe ich aber dennoch einen "Problem" welches ich lösen möchte aber dennoch kein Sicherheitsrisko eingenen möchte.
Das Loginsystem ist darauf ausgelegt das es ein user automatisch wieder einloggt wenn er wieder auf die Page kommt. Damit dies momentan Funktioniert wird beim Login in die db-tabelle "sessions" ein Eintrag erstellt.Zugleich ein cookie angelgt mit einem hash aus Zeit, IP und Browser (nur um sicher nicht doppelt den gleichen zu kriegen). Dieser hash wird natürlich auch in die DB gespeichert.
Soweit sogut.
Kommt der User nun auf die Seite und bringt das cookie mit wird die DB nach dem cookie-hash druchsucht und falls die Session noch "existiert" wird eine neue session gestartet.
Somit bekommt der user bei jedem neustarten des Browsers eine neue Session. Für mich ist nun einfach unklar ob die alte Session (welche ja nicht zwingend mit session_destroy() beendet wurde immer noch auf dem Server liegt und theoretisch wenn ein anderer user die Session mithört und genau den gleichen Browser etc. hat noch verwendbar ist oder ob diese nach kurzerzeit gelöscht wird?
Nun Frage ich mich ob es ev. sogar sinnvoll wäre das phpsession cookie auf X Tage laufzeit zu setzen, damit ich nur noch ein cookie habe genau so nur noch eine session auf dem Server oderdoch besser via DB zu prüfen.
Zusätzlich suche ich nach der möglichkeit das kein user doppelt eingeloggt sein kann. Dies geht momentan nur beschränkt, meldet sich User X auf einem PC an so könnte sich User X auch auf PC2 anmelden und wäre bei beiden PCs online. Schliesst er allerdings den Browser ist er ausgeloggt.
Dies ist so weil nur beim "starten" bzw. "widerherstellen" einer session geprüft wird ob sich der cooklie hash in der db geändert hat. Ist so eine Prüfung ohne eine weiter mysql query überhaupt irgend wie möglich?
Edit:
Ev. habe ich noch eine Lösung. Den cookie-hash in die benutzer-db zu Speichern und bei jedem mal zu checken ob er geändert wurde. Dies würd keine zusätzliche Query brauchen da eh bei jedem aufruf infos aus der benutzerzeile augegeben werden (wurde ein user gesperrt, hat er neue nachrichten, hat er freundesanfragen etc)
Nur die Frage mit der Session-Speicherzeit auf dem Server bleibt übrig...
Wird die Session so oder so no X Tage oder Stunden gespeichert denke ich würde es auch gehen die Session für "immer" via cookie beim Nutzer zu Speichern um den User nicht mit mehreren cookies zu nerven.
Ich habe seit langem ein Loginsystem. Dies Funktioniert soweit sehr gut und durch die Hilfe hier im Forum sollte das ganze auch relativ sicher sein. Nun habe ich aber dennoch einen "Problem" welches ich lösen möchte aber dennoch kein Sicherheitsrisko eingenen möchte.
Das Loginsystem ist darauf ausgelegt das es ein user automatisch wieder einloggt wenn er wieder auf die Page kommt. Damit dies momentan Funktioniert wird beim Login in die db-tabelle "sessions" ein Eintrag erstellt.Zugleich ein cookie angelgt mit einem hash aus Zeit, IP und Browser (nur um sicher nicht doppelt den gleichen zu kriegen). Dieser hash wird natürlich auch in die DB gespeichert.
Soweit sogut.
Kommt der User nun auf die Seite und bringt das cookie mit wird die DB nach dem cookie-hash druchsucht und falls die Session noch "existiert" wird eine neue session gestartet.
Somit bekommt der user bei jedem neustarten des Browsers eine neue Session. Für mich ist nun einfach unklar ob die alte Session (welche ja nicht zwingend mit session_destroy() beendet wurde immer noch auf dem Server liegt und theoretisch wenn ein anderer user die Session mithört und genau den gleichen Browser etc. hat noch verwendbar ist oder ob diese nach kurzerzeit gelöscht wird?
Nun Frage ich mich ob es ev. sogar sinnvoll wäre das phpsession cookie auf X Tage laufzeit zu setzen, damit ich nur noch ein cookie habe genau so nur noch eine session auf dem Server oderdoch besser via DB zu prüfen.
Zusätzlich suche ich nach der möglichkeit das kein user doppelt eingeloggt sein kann. Dies geht momentan nur beschränkt, meldet sich User X auf einem PC an so könnte sich User X auch auf PC2 anmelden und wäre bei beiden PCs online. Schliesst er allerdings den Browser ist er ausgeloggt.
Dies ist so weil nur beim "starten" bzw. "widerherstellen" einer session geprüft wird ob sich der cooklie hash in der db geändert hat. Ist so eine Prüfung ohne eine weiter mysql query überhaupt irgend wie möglich?
Edit:
Ev. habe ich noch eine Lösung. Den cookie-hash in die benutzer-db zu Speichern und bei jedem mal zu checken ob er geändert wurde. Dies würd keine zusätzliche Query brauchen da eh bei jedem aufruf infos aus der benutzerzeile augegeben werden (wurde ein user gesperrt, hat er neue nachrichten, hat er freundesanfragen etc)
Nur die Frage mit der Session-Speicherzeit auf dem Server bleibt übrig...
Wird die Session so oder so no X Tage oder Stunden gespeichert denke ich würde es auch gehen die Session für "immer" via cookie beim Nutzer zu Speichern um den User nicht mit mehreren cookies zu nerven.
Zuletzt bearbeitet: