为什么标准会话有效期为24分钟(1440秒)?

我一直在做一些关于PHP会话处理的研究,并且遇到了1440秒的session.gc_maxlifetime值。 我一直在想,为什么标准值是1440,它是如何计算的? 这个计算的基础是什么?

保持会议有多长时间? session.gc_maxlifetime的最小值/最大值是否会推荐? 值越高,Web应用程序对于会话劫持就越容易受到攻击。

真正的答案可能非常接近这个:

在PHP3的日子里,PHP本身没有会话支持。

但是一个名为PHPLIB的开源库,最初由Boris Erdmann和Netuse AG的Kristian Koehntopp编写,通过PHP3代码提供会话。

会话寿命是以分钟而不是秒来定义的。 默认的生命周期是1440分钟,也就是一天。 这是来自PHPLIB的那一行代码:

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

Sascha Schumann在1998年到2000年期间参与了PHPLIB项目。毫无疑问,他熟悉PHP3会话代码。

然后,PHP4在2000年出现了本机会话支持,但现在生命周期是以秒为单位指定的。

我敢打赌有人从来没有把分钟转换为秒。 这个人很可能是Sascha Schumann。 一旦他编码到Zend引擎,它也成为configuration( php.ini )的默认。

1440被用于时间计算,从几秒钟变成小时/天。

  • 1天= 24小时(小时* 24 = 1天)
  • 天= 1440分钟(分钟* 60 * 24 = 1天)
  • 天= 86400秒(秒* 60 * 1440 = 1天)

例:

9天[* 60] = 540 [* 1440] = 777600秒

相反的情况也是如此:

777600秒[/ 1440] = 540 [/ 60] = 9天