Почему стандартное время работы сеанса составляет 24 минуты (1440 секунд)?
Я провел некоторое исследование по обработке сеансов PHP и наткнулся на значение session.gc_maxlifetime
1440 секунд.
Мне было интересно, почему стандартное значение равно 1440 и как оно рассчитывается?
На чем основан этот расчет?
Как долго имеет смысл продолжать сеансы? Какие минимальные/максимальные значения для session.gc_maxlifetime вы бы рекомендовали? Я бы сказал, что чем выше значение, тем более уязвимо веб-приложение для захвата сеанса.
2 answers
Реальный ответ, вероятно, очень близок к этому:
Во времена PHP3 сам PHP не поддерживал сеансы.
Но библиотека с открытым исходным кодом под названием PHPLIB, первоначально написанная Борисом Эрдманом и Кристианом Кентоппом из Netuse AG, предоставляла сеансы с помощью кода PHP3.
Продолжительность сеанса была определена в минутах , а не в секундах. А время жизни по умолчанию составляло 1440 минут, или ровно один день. Вот эта строка кода из PHPLIB:
var $gc_time = 1440; ## Purge all session data older than 1440 minutes.
Саша Шуман участвовал в проекте PHPLIB примерно в период с 1998 по 2000 год. Нет сомнений, что он был знаком с кодом сеанса PHP3.
Затем PHP4 вышел в 2000 году с поддержкой встроенных сеансов, но теперь время жизни было указано в секундах.
Держу пари, кто-то просто никогда не утруждал себя преобразованием минут в секунды. Вполне вероятно, что этим человеком был Саша Шуман. Как только это значение было закодировано в движке Zend, оно стало конфигурация (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 дни