¿Por qué la duración estándar de la sesión es de 24 minutos (1440 segundos)?

101

He estado investigando un poco sobre el manejo de sesiones PHP y encontré el session.gc_maxlifetimevalor de 1440 segundos. Me he estado preguntando por qué el valor estándar es 1440 y cómo se calcula. ¿Cuál es la base de este cálculo?

¿Cuánto tiempo tiene sentido mantener sesiones? ¿Qué valores mínimos y máximos para session.gc_maxlifetime recomendaría? Cuanto mayor sea el valor, más vulnerable es la aplicación web para el secuestro de sesiones, diría yo.

Anna Völkl
fuente
+1Buena pregunta. Algo relacionado con, 60 x 12 x 2 ... Esperemos respuestas interesantes ... :)
Praveen Kumar Purushothaman
4
Aquí está la línea del código fuente donde se establece el valor predeterminado . Aquellos familiarizados con GIT pueden rastrear su historial y tal vez encontrar un RFC o un ticket de error (si corresponde).
Álvaro González
1
@Anil: Esta discusión no responde a mi pregunta.
Anna Völkl
2
@ ÁlvaroG.Vicario Encontré el cambio: github.com/php/php-src/commit/… sin embargo, no hay documentación asociada relevante. 1440fue de hecho el número original de minutos para el tiempo de espera, así que supongo que nunca lo sabremos a menos que alguien localice a Sascha Schumann.
Dai
6
Encontré la dirección de correo electrónico de Sascha y me comuniqué con él sobre esto, le avisaré a la gente si responde.
Dai

Respuestas:

183

La respuesta real probablemente esté muy cerca de esto:

Durante los días de PHP3, PHP en sí mismo no tenía soporte de sesión.

Pero una biblioteca de código abierto llamada PHPLIB, inicialmente escrita por Boris Erdmann y Kristian Koehntopp de NetUSE AG, proporcionó sesiones a través de código PHP3.

La duración de las sesiones se definió en minutos , no en segundos. Y la vida útil predeterminada era de 1440 minutos, o exactamente un día. Aquí está esa línea de código de PHPLIB:

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

Sascha Schumann estuvo involucrado con el proyecto PHPLIB alrededor del período de 1998 a 2000. No hay duda de que estaba familiarizado con el código de sesión PHP3.

Luego apareció PHP4 en el año 2000 con soporte de sesión nativo, pero ahora la vida útil se especificó en segundos.

Apuesto a que alguien nunca se molestó en convertir minutos en segundos. Es probable que esa persona fuera Sascha Schumann. Una vez que ese valor se codificó en el motor Zend, también se convirtió en la configuración ( php.ini) predeterminada.

CXJ
fuente
3
A los ojos les llama la atención que 24 adquiere un significado especial al cambiar la unidad. Entonces, de las respuestas dadas, la tuya tiene más sentido para mí.
Markus Malkusch
1
Eso es interesante. ¡Gracias por compartir! :)
SysVoid
3
¡Esto es realmente interesante! ¡Gracias!
Anna Völkl
Una referencia a la configuración predeterminada de PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
Según la documentación de PHP, la vida útil de la sesión se establece en segundos: php.net/manual/en/…
lemhannes
-16

1440 se utiliza en un cálculo de tiempo que convierte los segundos en horas / días.

  • 1 día = 24 horas (horas * 24 = 1 día)
  • día = 1440 minutos (minutos * 60 * 24 = 1 día)
  • día = 86400 segundos (segundos * 60 * 1440 = 1 día)

Ejemplo:

9 días [* 60] = 540 [* 1440] = 777600 segundos

Lo mismo es cierto a la inversa:

777600 segundos [/ 1440] = 540 [/ 60] = 9 días

Steve Terjeson
fuente
14
entonces, ¿por qué es la duración estándar de la sesión?
Félix Gagnon-Grenier
3
Debido a que es un número de nerd matemático que es aproximadamente el mismo que lo que muestra la investigación, es el mayor tiempo entre dos solicitudes en la misma sesión (20-30 minutos).
dimitar veselinov
22
@dimitarveselinov ¿Qué investigación?
Markus Malkusch