it-swarm.com.de

Wie lang sollte ein absolutes Sitzungszeitlimit sein?

Das OWASP Session Management Cheat Sheet ( https://www.owasp.org/index.php/Session_Management_Cheat_Sheet ) empfiehlt die Implementierung eines absoluten Sitzungszeitlimits (zusätzlich zum Zeitlimit für Leerlaufsitzungen). Dies bedeutet, dass die Anwendung den Benutzer zwingt, sich unabhängig von der Sitzungsaktivität erneut zu authentifizieren.

Gibt es Empfehlungen für die Dauer dieses Timeouts, um sicher genug zu sein und die Endbenutzer nicht zu ärgern? Wäre es ausreichend, ein absolutes Sitzungszeitlimit von 24 Stunden festzulegen? Mehr?

Die Anwendung, an der ich arbeite, wird in ein internes Unternehmensnetzwerk gestellt und von Benutzern verwendet, um ihre täglichen Aufgaben zu erledigen. Daher kann eine häufige erneute Authentifizierungsanforderung ein Usability-Problem sein.

12
Salamander

Es gibt keine strikte Antwort auf die Zeitdauer. Die Grenzen von Leerlaufzeitüberschreitungen hängen von den Vorschriften und möglicherweise den gesetzlichen Bestimmungen ab.

Der sitzungsbasierte Zugriff auf Karteninhaberdaten in PCI DSS 3.1 muss "angemessen" sein. PCI DSS 3.1 in Punkt 8.1.8 enthält hierzu spezifische Anleitungen

8.1.8 Wenn eine Sitzung länger als 15 Minuten inaktiv war, muss sich der Benutzer erneut authentifizieren, um das Terminal oder die Sitzung erneut zu aktivieren.

QUELLE: https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-1.pdf

Ähnliche Vorschläge gibt es für andere Compliance-Programme. Es ist wahrscheinlich die beste Wahl, es je nach Kontext der Datenempfindlichkeit konfigurierbar und flexibel zu machen.

Absolute Zeitüberschreitungen sind in keinem mir bekannten Rahmen vorgeschrieben, aber sie scheinen interessant zu sein. Die Auswirkungen auf die Benutzererfahrung sind möglicherweise erheblich, aber der Vorteil der Begrenzung der Dauer einer Sitzungsentführung ist ebenfalls erheblich. Es scheint eine bessere Lösung zu sein - wenn Sie den Anwendungscode steuern - wäre die Sitzungsrotation (dh ein Erneuerungszeitlimit im OWASP-Sprachgebrauch), bei der die Anwendung regelmäßig eine neue Sitzungs-ID generiert.

Ich empfehle, ein Verlängerungszeitlimit einzuhalten, wenn die Anwendung dies zulässt, und ein Verlängerungszeitlimit von nicht mehr als 1 Stunde zu verwenden. Dies reduziert das Hijacking-Risiko erheblich und sollte für jede Anwendung geeignet sein, die einen einfachen (kleinen und manuell kopierbaren) oder serialisierbaren Sitzungsstatus aufweist.

Wenn Absolutes Timeout Ihre einzige Option ist, würde ich das Timeout 24 Stunden machen. Es ist eine vernünftige Grenze und begrenzt die Überraschung. Ein mehrtägiges absolutes Timeout würde Benutzer wahrscheinlich verwirren, da sie die erneute Eingabeaufforderung als willkürlich oder möglicherweise als Hinweis auf einen Anwendungsfehler ansehen würden.

5
Alain O'Dea

24 Stunden sind möglicherweise zu viel, 24 Minuten ist der Standardwert für PHP Sitzungen (session.gc_maxlifetime), aber es besteht nur eine Wahrscheinlichkeit von 1%, dass die Sitzungen nach dieser Zeit ablaufen (session.gc_divisor) ).

Sie müssen den Divisor für die Garbage Collection auf 1 setzen, dann ist er 100%.

https://stackoverflow.com/questions/156712/php-what-is-the-default-lifetime-of-a-session

Sie müssen überprüfen, wie Sitzungen und Speicherbereinigung in der von Ihnen verwendeten serverseitigen Sprache funktionieren.

Wenn der Browser geschlossen wird, wird auch die Sitzung geschlossen und wahrscheinlich aus der Speicherbereinigung gelöscht.

Das Cheatsheet enthält klare Empfehlungen:

Common idle timeouts ranges are 2-5 minutes for high-value applications and 15- 30 minutes for low risk applications.

Beachten Sie jedoch, dass Sitzungen nicht automatisch nach 24 Minuten beendet werden, wenn die Garbage Collection sie nicht sicher löscht (der Divisor).

Sie können eine Sitzung in Ihrem Code jederzeit fortsetzen und ihre Lebensdauer verlängern, wenn ein Benutzer aktiv ist. Wenn der Benutzer für eine bestimmte Zeit nicht aktiv ist, lassen Sie die Sitzung ablaufen und löschen Sie sie.

Eine einzelne Sitzung sollte jedoch so kurz wie möglich sein und ablaufen.

https://stackoverflow.com/a/8843033/753676

0
Daniel Ruf