Pourquoi la durée de vie standard de la session est-elle de 24 minutes (1440 secondes)?

101

J'ai fait des recherches sur la gestion de session PHP et suis tombé sur la session.gc_maxlifetimevaleur de 1440 secondes. Je me demande pourquoi la valeur standard est de 1440 et comment elle est calculée? Quelle est la base de ce calcul?

Combien de temps est-il judicieux de garder les sessions? Quelles valeurs min / max pour session.gc_maxlifetime recommanderiez-vous? Plus la valeur est élevée, plus l'application Web est vulnérable au piratage de session, je dirais.

Anna Völkl
la source
+1Bonne question. Quelque chose lié à, 60 x 12 x 2 ... Attendons des réponses intéressantes ... :)
Praveen Kumar Purushothaman
4
Voici la ligne de code source où la valeur par défaut est définie . Ceux qui sont familiers avec GIT peuvent être en mesure de suivre son histoire et peut-être trouver un RFC ou un ticket de bogue (le cas échéant).
Álvaro González
1
@Anil: Cette discussion ne répond pas à ma question.
Anna Völkl
2
@ ÁlvaroG.Vicario J'ai trouvé le changement: github.com/php/php-src/commit/… mais il n'y a aucune documentation associée pertinente. 1440était en effet le nombre initial de minutes pour le délai d'attente, donc je suppose que nous ne le saurons jamais à moins que quelqu'un ne retrouve Sascha Schumann.
Dai
6
J'ai trouvé l'adresse e-mail de Sascha et l'ai contacté à ce sujet, je ferai savoir aux gens s'il répond.
Dai

Réponses:

183

La vraie réponse est probablement très proche de ceci:

À l'époque de PHP3, PHP lui-même n'avait pas de support de session.

Mais une bibliothèque open source appelée PHPLIB, initialement écrite par Boris Erdmann et Kristian Koehntopp de NetUSE AG, fournissait des sessions via du code PHP3.

Les durées de vie des sessions étaient définies en minutes et non en secondes. Et la durée de vie par défaut était de 1440 minutes, soit exactement un jour. Voici cette ligne de code de PHPLIB:

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

Sascha Schumann a participé au projet PHPLIB entre 1998 et 2000. Il ne fait aucun doute qu'il était familier avec le code de session PHP3.

Puis PHP4 est sorti en 2000 avec un support de session natif, mais maintenant la durée de vie était spécifiée en secondes.

Je parie que quelqu'un n'a jamais pris la peine de convertir des minutes en secondes. Il est probable que cette personne était Sascha Schumann. Une fois que cette valeur a été codée dans le moteur Zend, elle est également devenue la configuration php.inipar défaut ( ).

CXJ
la source
3
Il nous semble que le 24 prend une signification particulière lors du changement d'unité. Donc, parmi les réponses données, la vôtre me semble la plus logique.
Markus Malkusch
1
C'est intéressant. Merci d'avoir partagé! :)
SysVoid
3
C'est vraiment intéressant! Merci!
Anna Völkl
Une référence aux paramètres par défaut de PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
Selon la documentation PHP, la durée de vie de la session est définie en secondes: php.net/manual/en
...
-16

1440 est utilisé dans un calcul de temps transformant les secondes en heures / jours.

  • 1 jour = 24 heures (heures * 24 = 1 jour)
  • jour = 1440 minutes (minutes * 60 * 24 = 1 jour)
  • jour = 86400 secondes (secondes * 60 * 1440 = 1 jour)

Exemple:

9 jours [* 60] = 540 [* 1440] = 777600 secondes

La même chose est vraie à l'inverse:

777600 secondes [/ 1440] = 540 [/ 60] = 9 jours

Steve Terjeson
la source
14
alors pourquoi est-ce la durée de vie de session standard?
Félix Gagnon-Grenier
3
Parce que c'est un nombre de maths nerd qui est approximativement le même que ce que la recherche montre est le plus grand temps entre deux demandes dans la même session (20-30 minutes).
dimitar veselinov
22
@dimitarveselinov Quelle recherche?
Markus Malkusch