Почему стандартная продолжительность сеанса составляет 24 минуты (1440 секунд)?

101

Я провел некоторое исследование обработки сеансов PHP и обнаружил session.gc_maxlifetimeзначение 1440 секунд. Мне вот интересно, почему стандартное значение 1440 и как оно рассчитывается? На чем основан этот расчет?

Как долго имеет смысл проводить сеансы? Какие минимальные / максимальные значения для session.gc_maxlifetime вы бы порекомендовали? Я бы сказал, что чем выше значение, тем более уязвимо веб-приложение для взлома сеанса.

Анна Фёлькль
источник
+1Хороший вопрос. Что-то связанное с 60 x 12 x 2 ... Давайте подождем интересных ответов ... :)
Praveen Kumar Purushothaman
4
Вот строка исходного кода, в которой установлено значение по умолчанию . Те, кто знаком с GIT, могут отслеживать его историю и, возможно, найти RFC или сообщение об ошибке (если таковое имеется).
Альваро Гонсалес
1
@Anil: Это обсуждение не отвечает на мой вопрос.
Анна Фёлькль
2
@ ÁlvaroG.Vicario Я нашел изменение: github.com/php/php-src/commit/… однако соответствующей документации нет. 1440действительно было первоначальное количество минут для тайм-аута, поэтому я думаю, мы никогда не узнаем, если кто-то не выследит Сашу Шумана.
Дай
6
Я нашел адрес электронной почты Саши и связался с ним по этому поводу, я дам знать, если он ответит.
Дай

Ответы:

184

Настоящий ответ, вероятно, очень близок к этому:

Еще во времена PHP3 сам PHP не имел поддержки сеансов.

Но библиотека с открытым исходным кодом PHPLIB, первоначально написанная Борисом Эрдманном и Кристианом Кентоппом из NetUSE AG, обеспечивала сеансы через код PHP3.

Время жизни сеанса определялось в минутах , а не в секундах. И время жизни по умолчанию было 1440 минут, или ровно один день. Вот эта строка кода из PHPLIB:

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

Саша Шуман был вовлечен в проект PHPLIB в период с 1998 по 2000 год. Несомненно, он был знаком с кодом сеанса PHP3.

Затем в 2000 году вышел PHP4 с собственной поддержкой сеансов, но теперь время жизни было указано в секундах.

Бьюсь об заклад, кто-то просто никогда не удосужился перевести минуты в секунды. Вероятно, этим человеком был Саша Шуман. После того, как это значение было закодировано в движке Zend, оно также стало значением по php.iniумолчанию для configuration ( ).

CXJ
источник
3
В глаза бросается то, что 24 приобретает особое значение при смене блока. Так что из представленных ответов мне больше всего понятен ваш.
Маркус Малкуш
1
Это интересно. Спасибо, что поделился! :)
SysVoid
3
Это действительно интересно! Спасибо!
Анна Фёлькль
Одна ссылка на настройки PHP4 по умолчанию: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
Согласно документации PHP, время жизни сеанса устанавливается в секундах: php.net/manual/en/…
lemhannes
-16

1440 используется для вычисления времени, превращая секунды в часы / дни.

  • 1 день = 24 часа (часы * 24 = 1 день)
  • день = 1440 минут (минуты * 60 * 24 = 1 день)
  • день = 86400 секунд (секунды * 60 * 1440 = 1 день)

Пример:

9 дней [* 60] = 540 [* 1440] = 777600 секунд

То же верно и в обратном направлении:

777600 секунд [/ 1440] = 540 [/ 60] = 9 дней

Стив Терджесон
источник
14
так почему это стандартное время жизни сеанса?
Félix Gagnon-Grenier
3
Поскольку это математическое число ботаника, примерно такое же, как показывают исследования, это наибольшее время между двумя запросами в одном сеансе (20-30 минут).
димитар веселинов
22
@dimitarveselinov Какие исследования?
Маркус Малкуш