Session handling bzw. automatischer Logoff im Backend

Support zu BlackCat CMS allgemein
Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Do 7. Mai 2015, 17:25

Ich habe jetzt noch zwei Probleme. Ein technisches und eins, was mit dem Benutzerverständnis zu tun hat.

Das Technische: Bei mir kommt es beim Logout - Session ist abgelaufen - immer wieder zu einem Fehler bei session_destroy(). Aber eben nicht _immer_.

Das andere: Wenn man z.B. in einem WYSIWYG-Feld rumtipselt, kann nebenbei die Sessionzeit ablaufen, weil das Rumtipseln ja lokal stattfindet und nicht auf dem Server. Ich könnte mir vorstellen, daß das für den einen oder anderen schwer zu verstehen ist. Ist allerdings beim Onlinebanking auch so.

Added in 1 hour 56 minutes 35 seconds:
Tse, jetzt dachte ich es klappt alles, aber irgendwie hab ich es jetzt hingekriegt, daß man sich nicht mehr einloggen kann... also GAR nicht mehr. :shock:

Added in 13 minutes 26 seconds:
Okay, hab den Fehler gefunden. Die Änderungen sind jetzt auf GitHub hochgeladen.

https://github.com/BlackCatDevelopment/ ... elease-1.2

Falls sich einer traut. :lol:
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Zusammenfassung

Beitrag von shadowcat » Do 7. Mai 2015, 18:23

Hier nochmal eine zusammenfassende Beschreibung der Implementierung, da das ja etwas verstreut ist.

Bisher war die Lebensdauer des Cookies hartcodiert auf 3 Stunden festgelegt. Dies haben wir so von LEPTON übernommen. Die auf dem Server (php.ini) eingestellte Session-Lebensdauer wurde weder geändert noch berücksichtigt.

Dieses Verhalten ist jetzt so geändert, daß die Cookie-Lebensdauer auf die Session-Lebensdauer gesetzt wird. Zudem wird die Cookie-Lebensdauer bei jedem Zugriff zurückgesetzt - vorher war nach den 3 Stunden Schluß, auch wenn man die ganze Zeit aktiv war.

Im Backend sieht man jetzt unten rechts einen Countdown, der die verbleibende Sessionzeit anzeigt.
2015-05-07 18_29_45-BlackCat CMS » Administration - PAGES.png
2015-05-07 18_29_45-BlackCat CMS » Administration - PAGES.png (3.48 KiB) 2600 mal betrachtet
Die Hintergrundfarbe ändert sich 5 Minuten vor Ablauf der Session von neutral auf rot. 30 Sekunden vor dem Ablauf der Session-Laufzeit wird ein Dialog geöffnet, der vor dem drohenden Rauswurf warnt. Hier hat man jetzt zwei Optionen: Angemeldet bleiben oder Abmelden. Reagiert man nicht, wird man nach Ablauf des Countdowns abgemeldet.

Damit nichtgespeicherte Daten erhalten bleiben, wird man an dieser Stelle jedoch nicht auf den Login Screen weitergeleitet, sondern erhält ein Anmeldeformular als Overlay. (Vorschlag von florian, nochmals danke dafür.) Hier kann man sich nun erneut authorisieren und kann dann weiterarbeiten, als wäre nichts passiert.

Noch offen (abgesehen von Tests natürlich): Wenn man _andere_, jedoch gültige Login-Daten angibt, kommt man trotzdem auf die Seite zurück, die der Benutzer davor offen hatte. Wenn man die gleichen Rechte hat mag das noch okay sein, andernfalls wird man aber spätestens beim Versuch zu speichern ein Problem haben. Abgesehen davon, daß man unter Umständen Inhalte sieht, die man sonst nicht sehen würde.

Ein weiterer wichtiger Punkt: Drückt man nach dem Logoff - also wenn man das Overlay mit dem Anmeldeformular sieht - F5, wird man zur Anmeldeseite umgeleitet. Jetzt sind ungespeicherte Änderungen auf jeden Fall weg. Das läßt sich aber nicht unterbinden.

Noch zu prüfen ist, ob der Keep alive - Warndialog kommt mit Button [Angemeldet bleiben] - eine mögliche Sicherheitslücke ist.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

nicoletta
Beiträge: 139
Registriert: Mi 29. Okt 2014, 17:55
Wohnort: Oldenburg

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von nicoletta » Sa 23. Mai 2015, 15:17

Wow, sehr gut :)

Ist es nicht möglich bei Aktivität die lifetime zurückzusetzen, oder habe ich etwas überlesen?

blackfan
Beiträge: 25
Registriert: Mi 26. Nov 2014, 14:52

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von blackfan » Mi 10. Jun 2015, 11:31

Wow, bin gerade durch Zufall auf diesen Threat gestoßen, ganz großes Kino, mal wieder...
Auch von mir ein Dankeschön für die hervorragende Arbeit...
BlackCat Rocks,
Gruß blackfan

Benutzeravatar
shadowcat
Administrator
Beiträge: 4570
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Session handling bzw. automatischer Logoff im Backend

Beitrag von shadowcat » Mo 17. Aug 2015, 09:58

My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Antworten