Ich habe einige Nachforschungen über PHP Session Handling angestellt und bin auf das gestoßen session.gc_maxlifetime
Wert von 1440 Sekunden. Ich habe mich gefragt, warum der Standardwert 1440 ist und wie er berechnet wird? Was ist die Grundlage 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.
Die eigentliche Antwort liegt wahrscheinlich sehr nahe bei dieser:
Zu PHP3-Tagen hatte PHP selbst keine Session-Unterstützung.
Aber eine Open-Source-Bibliothek namens PHPLIB, die ursprünglich von Boris Erdmann und Kristian Koehntopp von der NetUSE AG geschrieben wurde, stellte Sitzungen über PHP3-Code bereit.
Die Sitzungslebensdauer wurde in definiert Protokoll, nicht Sekunden. Und die Standardlebensdauer betrug 1440 Minuten oder genau einen Tag. Hier ist diese 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 kannte er den Session-Code von PHP3.
Dann kam PHP4 im Jahr 2000 mit nativer Session-Unterstützung heraus, aber jetzt wurde die Lebensdauer in Sekunden angegeben.
Ich wette, jemand hat sich nie die Mühe gemacht, Minuten in Sekunden umzuwandeln. Wahrscheinlich handelte es sich bei dieser Person um Sascha Schumann. Sobald dieser Wert in die Zend-Engine codiert wurde, wurde er zur Konfiguration (php.ini
) ebenfalls standardmäßig.
1440 wird in einer Zeitberechnung verwendet, die Sekunden in Stunden/Tage umwandelt.
- 1 Tag = 24 Stunden ( Stunden * 24 = 1 Tag )
- 1 Tag = 1440 Minuten (Minuten * 60 * 24 = 1 Tag)
- 1 Tag = 86400 Sekunden ( Sekunden * 60 * 1440 = 1 Tag )
Beispiel:
9 Tage [* 60] = 540 [* 1440] = 777600 Sekunden
Dasselbe gilt umgekehrt:
777600 Sekunden [/ 1440] = 540 [/ 60] = 9 Tage
Hier ist die Quellcodezeile, in der der Standardwert festgelegt ist. Diejenigen, die mit GIT vertraut sind, können möglicherweise seinen Verlauf verfolgen und vielleicht ein RFC- oder Bug-Ticket (falls vorhanden) finden.
– Alvaro González
5. Februar 2013 um 9:06 Uhr
@Anil: Diese Diskussion beantwortet meine Frage nicht.
– Anna Völkl
5. Februar 2013 um 10:48 Uhr
@ÁlvaroG.Vicario Ich habe die Änderung gefunden: github.com/php/php-src/commit/… Es gibt jedoch keine relevante zugehörige Dokumentation.
1440
war in der Tat die ursprüngliche Anzahl von Minuten für die Auszeit, also werden wir es wohl nie erfahren, es sei denn, jemand spürt Sascha Schumann auf.– Dai
7. Februar 2013 um 8:08 Uhr
Ich habe Saschas E-Mail-Adresse gefunden und ihn diesbezüglich kontaktiert. Ich werde die Leute wissen lassen, wenn er antwortet.
– Dai
7. Februar 2013 um 8:13 Uhr
Warum hat Sascha nicht geantwortet!?
– Denis
20. Mai 2020 um 15:18 Uhr