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

时间:2013-02-05 08:49:40

标签: php security session

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

保持会话有多长时间?您建议使用session.gc_maxlifetime的最小值/最大值? 值得越高,Web-App对于会话劫持越脆弱,我要说。

2 个答案:

答案 0 :(得分:170)

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

在PHP3期间,PHP本身没有会话支持。

但是一个名为PHPLIB的开源库,最初由Borys 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引擎后,它也成为配置(php.ini)的默认值。

答案 1 :(得分:-15)

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

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

示例:

  

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

反过来也是如此:

  

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