Por que a duração da sessão padrão é de 24 minutos (1440 segundos)?

101

Eu tenho feito algumas pesquisas sobre manipulação de sessão PHP e encontrei o session.gc_maxlifetimevalor de 1440 segundos. Tenho me perguntado por que o valor padrão é 1440 e como ele é calculado? Qual é a base para este cálculo?

Por quanto tempo faz sentido manter as sessões? Quais valores mínimo / máximo para session.gc_maxlifetime você recomendaria? Quanto maior o valor, mais vulnerável o Web-App é para Session Hijacking, eu diria.

Anna Völkl
fonte
+1Boa pergunta. Algo relacionado a, 60 x 12 x 2 ... Vamos esperar por respostas interessantes ... :)
Praveen Kumar Purushothaman
4
Aqui está a linha do código-fonte onde o valor padrão é definido . Aqueles familiarizados com o GIT podem rastrear seu histórico e talvez encontrar um RFC ou tíquete de bug (se houver).
Álvaro González
1
@Anil: Esta discussão não responde à minha pergunta.
Anna Völkl
2
@ ÁlvaroG.Vicario Eu encontrei a mudança: github.com/php/php-src/commit/… entretanto, não há nenhuma documentação associada relevante. 1440era de fato o número original de minutos para o tempo limite, então acho que nunca saberemos, a menos que alguém rastreie Sascha Schumann.
Dai
6
Encontrei o endereço de e-mail de Sascha e entrei em contato com ele sobre isso, avisarei as pessoas se ele responder.
Dai

Respostas:

183

A verdadeira resposta é provavelmente muito próxima a esta:

Na época do PHP3, o próprio PHP não tinha suporte de sessão.

Mas uma biblioteca de código aberto chamada PHPLIB, inicialmente escrita por Boris Erdmann e Kristian Koehntopp da NetUSE AG, fornecia sessões via código PHP3.

A duração da sessão foi definida em minutos , não segundos. E a vida útil padrão era de 1440 minutos, ou exatamente um dia. Esta é a linha de código de PHPLIB:

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

Sascha Schumann esteve envolvido com o projeto PHPLIB por volta do período de 1998 a 2000. Não há dúvida de que ele estava familiarizado com o código de sessão PHP3.

Então o PHP4 foi lançado no ano 2000 com suporte a sessão nativa, mas agora o tempo de vida era especificado em segundos.

Aposto que alguém nunca se preocupou em converter minutos em segundos. É provável que essa pessoa fosse Sascha Schumann. Depois que esse valor foi codificado no motor Zend, ele também se tornou o php.inipadrão de configuração ( ).

CXJ
fonte
3
Percebe-se que 24 ganha um significado especial ao trocar a unidade. Portanto, a partir das respostas dadas, a sua faz mais sentido para mim.
Markus Malkusch
1
Isso é interessante. Obrigado por compartilhar! :)
SysVoid
3
Isso é realmente interessante! Obrigado!
Anna Völkl
Uma referência às configurações padrão do PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
De acordo com a documentação do PHP, o tempo de duração da sessão é definido em segundos: php.net/manual/en/…
lemhannes
-16

1440 é usado em um cálculo de tempo transformando segundos em horas / dias.

  • 1 dia = 24 horas (horas * 24 = 1 dia)
  • dia = 1440 minutos (minutos * 60 * 24 = 1 dia)
  • dia = 86400 segundos (segundos * 60 * 1440 = 1 dia)

Exemplo:

9 dias [* 60] = 540 [* 1440] = 777600 segundos

O mesmo é verdade ao contrário:

777600 segundos [/ 1440] = 540 [/ 60] = 9 dias

Steve Terjeson
fonte
14
então por que é o tempo de vida padrão da sessão?
Félix Gagnon-Grenier
3
Porque é um número nerd da matemática que é aproximadamente o mesmo que a pesquisa mostra que é o maior tempo entre duas solicitações na mesma sessão (20-30 minutos).
dimitar veselinov
22
@dimitarveselinov Qual pesquisa?
Markus Malkusch