Чому стандартний тривалість сеансу становить 24 хвилини (1440 секунд)?


101

Я займався деякими дослідженнями PHP Session Handling і натрапив на session.gc_maxlifetimeзначення 1440 секунд. Мені було цікаво, чому стандартне значення - 1440 і як воно обчислюється? Що є підставою для цього розрахунку?

Як довго має сенс тримати сеанси? Які мінімальні та максимальні значення для session.gc_maxlifetime ви б рекомендували? Чим вище значення, я б сказав, що більш вразливим є веб-додаток для викрадення сеансів.


+1Приємне запитання. Щось пов’язане з, 60 x 12 x 2 ... Давайте чекати цікавих відповідей ... :)
Praveen Kumar Purushothaman

4
Ось рядок вихідного коду, де встановлено значення за замовчуванням . Ті, хто знайомий з GIT, можуть відслідковувати його історію і, можливо, знайти RFC або квиток на помилку (якщо така є).
Альваро Гонсалес

1
@Anil: Ця дискусія не відповідає на моє запитання.
Anna Völkl

2
@ ÁlvaroG.Vicario Я знайшов зміну: github.com/php/php-src/commit/…, однак там є відповідна нульова відповідна документація. 1440дійсно була первісна кількість хвилин на час очікування, тому я думаю, що ми ніколи не дізнаємось, якщо хтось не вистежить Саша Шумана.
Дай

6
Я знайшов електронну адресу Саша і зв’язався з ним з цього приводу, я повідомлю людей, чи він відповість.
Дай

Відповіді:


183

Справжня відповідь, ймовірно, дуже близька до цього:

Ще протягом 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замовчуванням config ( ).


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
так чому це стандартний час життя сесії?
Фелікс Ганьон-Греньє,

3
Тому що його математичний номер ботанік приблизно такий самий, як показують дослідження, - це найбільший час між двома запитами в одному сеансі (20-30 хвилин).
dimitar veselinov

22
@dimitarveselinov Які дослідження?
Маркус Малкуш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.