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

2022-08-30 07:26:52

我一直在对PHP会话处理进行一些研究,并遇到了1440秒的值。我一直在想为什么标准值是1440,它是如何计算的?这种计算的依据是什么?session.gc_maxlifetime

将会话保留多长时间有意义?您会推荐session.gc_maxlifetime的最小值/最大值?我想说,值越高,Web应用程序就越容易受到会话劫持的攻击。


答案 1

真正的答案可能非常接近于此:

在 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


答案 2

1440 用于将秒转换为小时/天的时间计算。

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

例:

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

反之亦然:

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


推荐