Warum beträgt die Standardlebensdauer 24 Minuten (1440 Sekunden)?

101

Ich habe einige Nachforschungen zum Umgang mit PHP-Sitzungen angestellt und bin auf den session.gc_maxlifetimeWert von 1440 Sekunden gestoßen. Ich habe mich gefragt, warum der Standardwert 1440 ist und wie er berechnet wird. Was ist die Basis für diese Berechnung?

Wie lange ist es sinnvoll, Sitzungen zu halten? Welche Min / Max-Werte für session.gc_maxlifetime würden Sie empfehlen? Je höher der Wert, desto anfälliger ist die Web-App für Session Hijacking, würde ich sagen.

Anna Völkl
quelle
+1Gute Frage. Etwas im Zusammenhang mit, 60 x 12 x 2 ... Warten wir auf interessante Antworten ... :)
Praveen Kumar Purushothaman
4
Hier ist die Quellcodezeile, in der der Standardwert festgelegt ist . Diejenigen, die mit GIT vertraut sind, können möglicherweise dessen Verlauf verfolgen und möglicherweise ein RFC- oder Bug-Ticket (falls vorhanden) finden.
Álvaro González
1
@ Anil: Diese Diskussion beantwortet meine Frage nicht.
Anna Völkl
2
@ ÁlvaroG.Vicario Ich habe die Änderung gefunden: github.com/php/php-src/commit/… es gibt jedoch keine relevante zugehörige Dokumentation. 1440war in der Tat die ursprüngliche Anzahl von Minuten für das Timeout, also werden wir es wohl nie erfahren, wenn nicht jemand Sascha Schumann aufspürt.
Dai
6
Ich habe Saschas E-Mail-Adresse gefunden und ihn darüber kontaktiert. Ich werde die Leute wissen lassen, wenn er antwortet.
Dai

Antworten:

183

Die wirkliche Antwort liegt wahrscheinlich sehr nahe daran:

Während der PHP3-Tage hatte PHP selbst keine Sitzungsunterstützung.

Eine Open-Source-Bibliothek namens PHPLIB, die ursprünglich von Boris Erdmann und Kristian Koehntopp von der NetUSE AG geschrieben wurde, bot Sitzungen über PHP3-Code an.

Die Sitzungslebensdauer wurde in Minuten und nicht in Sekunden definiert. Die Standardlebensdauer betrug 1440 Minuten oder genau einen Tag. Hier ist die Codezeile von PHPLIB:

var $gc_time  = 1440;       ## Purge all session data older than 1440 minutes.

Sascha Schumann war zwischen 1998 und 2000 am PHPLIB-Projekt beteiligt. Zweifellos war er mit dem PHP3-Sitzungscode vertraut.

Dann kam PHP4 im Jahr 2000 mit nativer Sitzungsunterstützung heraus, aber jetzt wurde die Lebensdauer in Sekunden angegeben.

Ich wette, jemand hat sich nie die Mühe gemacht, Minuten in Sekunden umzuwandeln. Es ist wahrscheinlich, dass diese Person Sascha Schumann war. Sobald dieser Wert in der Zend-Engine codiert wurde, wurde er ebenfalls zum php.iniStandard für configuration ( ).

CXJ
quelle
3
Es fällt einem auf, dass 24 beim Wechseln der Einheit eine besondere Bedeutung bekommt. Von den gegebenen Antworten ist Ihre für mich am sinnvollsten.
Markus Malkusch
1
Das ist interessant. Danke für das Teilen! :)
SysVoid
3
Das ist wirklich interessant! Vielen Dank!
Anna Völkl
Ein Verweis auf PHP4-Standardeinstellungen: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
Laut PHP-Dokumentation ist die Sitzungslebensdauer in Sekunden festgelegt: php.net/manual/en/…
Lemhannes
-16

1440 wird in einer Zeitberechnung verwendet, bei der Sekunden in Stunden / Tage umgewandelt werden.

  • 1 Tag = 24 Stunden (Stunden * 24 = 1 Tag)
  • Tag = 1440 Minuten (Minuten * 60 * 24 = 1 Tag)
  • Tag = 86400 Sekunden (Sekunden * 60 * 1440 = 1 Tag)

Beispiel:

9 Tage [* 60] = 540 [* 1440] = 777600 Sekunden

Das gleiche gilt umgekehrt:

777600 Sekunden [/ 1440] = 540 [/ 60] = 9 Tage

Steve Terjeson
quelle
14
Warum ist es die Standard-Sitzungslebensdauer?
Félix Gagnon-Grenier
3
Da es sich um eine mathematische Nerd-Nummer handelt, die ungefähr der von der Forschung angegebenen entspricht, ist die größte Zeit zwischen zwei Anfragen in derselben Sitzung (20 bis 30 Minuten).
Dimitar Veselinov
22
@dimitarveselinov Welche Forschung?
Markus Malkusch