Perché la durata della sessione standard è di 24 minuti (1440 secondi)?


101

Ho fatto alcune ricerche sulla gestione delle sessioni PHP e ho riscontrato il session.gc_maxlifetimevalore di 1440 secondi. Mi sono chiesto perché il valore standard è 1440 e come viene calcolato? Qual è la base per questo calcolo?

Quanto tempo ha senso mantenere le sessioni? Quali valori min / max per session.gc_maxlifetime consiglieresti? Più alto è il valore, più l'app Web è vulnerabile per il dirottamento della sessione, direi.


+1Bella domanda. Qualcosa relativo a, 60 x 12 x 2 ... Aspettiamo risposte interessanti ... :)
Praveen Kumar Purushothaman

4
Ecco la riga del codice sorgente in cui è impostato il valore predefinito . Chi ha familiarità con GIT potrebbe essere in grado di tenere traccia della sua cronologia e forse trovare un RFC o un bug ticket (se presente).
Álvaro González

1
@ Anil: questa discussione non risponde alla mia domanda.
Anna Völkl

2
@ ÁlvaroG.Vicario Ho trovato la modifica: github.com/php/php-src/commit/… tuttavia non vi è alcuna documentazione associata pertinente. 1440era effettivamente il numero originale di minuti per il timeout, quindi immagino che non lo sapremo mai a meno che qualcuno non rintracci Sascha Schumann.
Dai

6
Ho trovato l'indirizzo email di Sascha e l'ho contattato per questo, farò sapere alla gente se risponde.
Dai

Risposte:


183

La vera risposta è probabilmente molto vicina a questa:

Durante i giorni PHP3, PHP stesso non aveva supporto per le sessioni.

Ma una libreria open-source chiamata PHPLIB, inizialmente scritta da Boris Erdmann e Kristian Koehntopp di NetUSE AG, forniva sessioni tramite codice PHP3.

La durata delle sessioni è stata definita in minuti , non in secondi. E la durata predefinita era di 1440 minuti o esattamente un giorno. Ecco quella riga di codice da PHPLIB:

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

Sascha Schumann è stato coinvolto nel progetto PHPLIB nel periodo dal 1998 al 2000. Non c'è dubbio che conosceva il codice di sessione PHP3.

Quindi PHP4 è uscito nel 2000 con il supporto nativo della sessione, ma ora la durata è stata specificata in secondi.

Scommetto che qualcuno non si è mai preso la briga di convertire i minuti in secondi. È probabile che quella persona fosse Sascha Schumann. Una volta che quel valore è stato codificato nel motore Zend, è diventato anche il php.inivalore predefinito di configurazione ( ).


3
Si nota che 24 assume un significato speciale quando si cambia l'unità. Quindi tra le risposte date la tua ha più senso per me.
Markus Malkusch

1
Interessante. Grazie per la condivisione! :)
SysVoid

3
Questo è davvero interessante! Grazie!
Anna Völkl

Un riferimento alle impostazioni predefinite di PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ

Secondo la documentazione di PHP la durata della sessione è impostato in secondi: php.net/manual/en/...
lemhannes

-16

1440 viene utilizzato in un calcolo del tempo che trasforma i secondi in ore / giorni.

  • 1 giorno = 24 ore (ore * 24 = 1 giorno)
  • giorno = 1440 minuti (minuti * 60 * 24 = 1 giorno)
  • giorno = 86400 secondi (secondi * 60 * 1440 = 1 giorno)

Esempio:

9 giorni [* 60] = 540 [* 1440] = 777600 secondi

Lo stesso vale al contrario:

777600 secondi [/ 1440] = 540 [/ 60] = 9 giorni


14
allora perché è la durata della sessione standard?
Félix Gagnon-Grenier

3
Perché è un numero nerd di matematica che è approssimativamente uguale a quello che la ricerca mostra è il tempo più lungo tra due richieste nella stessa sessione (20-30 minuti).
dimitar veselinov

22
@dimitarveselinov Quale ricerca?
Markus Malkusch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.