为什么标准会话生存期为 24 分钟(1440 秒)?
我一直在对PHP会话处理进行一些研究,并遇到了1440秒的值。我一直在想为什么标准值是1440,它是如何计算的?这种计算的依据是什么?session.gc_maxlifetime
将会话保留多长时间有意义?您会推荐session.gc_maxlifetime的最小值/最大值?我想说,值越高,Web应用程序就越容易受到会话劫持的攻击。
我一直在对PHP会话处理进行一些研究,并遇到了1440秒的值。我一直在想为什么标准值是1440,它是如何计算的?这种计算的依据是什么?session.gc_maxlifetime
将会话保留多长时间有意义?您会推荐session.gc_maxlifetime的最小值/最大值?我想说,值越高,Web应用程序就越容易受到会话劫持的攻击。
真正的答案可能非常接近于此:
在 PHP3 期间,PHP 本身没有会话支持。
但是一个名为PHPLIB的开源库,最初由NetUSE AG的Boris Erdmann和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 年问世,支持本机会话,但现在生存期以秒为单位指定。
我敢打赌,有人从来没有费心将分钟转换为秒。这个人很可能是萨沙·舒曼。一旦该值被编码到Zend引擎中,它也成为配置()默认值。php.ini
1440 用于将秒转换为小时/天的时间计算。
例:
9 天 [* 60] = 540 [* 1440] = 777600 秒
反之亦然:
777600 秒 [/ 1440] = 540 [/ 60] = 9 天