標準セッションの有効期間が24分(1440秒)であるのはなぜですか?


101

私はPHPセッション処理についていくつかの調査を行っておりsession.gc_maxlifetime、1440秒という値に遭遇しました。なぜ標準値が1440であり、それがどのように計算されるのか疑問に思っていましたか?この計算の根拠は何ですか?

セッションを続けることはどのくらい意味がありますか?session.gc_maxlifetimeのどの最小値/最大値をお勧めしますか?値が高いほど、Webアプリがセッションハイジャックに対して脆弱であると私は思います。


+1いい質問だ。関連する何か、60 x 12 x 2 ...興味深い答えを待ち
ましょう

4
ここだデフォルト値が設定されているソースコード行が。GITに精通している人は、その履歴を追跡でき、RFCまたはバグチケット(存在する場合)を見つけることができます。
アルバロゴンサレス

1
@アニル:この議論は私の質問に答えません。
AnnaVölkl2013

2
@ÁlvaroG.Vicario変更を見つけました:github.com/php/php-src/commit/…ただし、関連するドキュメントはありません。1440確かにタイムアウトの元の分数だったので、誰かがSascha Schumannを追跡しない限り、私たちは決してわからないでしょう。

6
Saschaのメールアドレスを見つけて連絡しました。返信があったら知らせます。

回答:


183

本当の答えはおそらくこれに非常に近いです:

PHP3日間、PHP自体はセッションをサポートしていませんでした。

しかし、最初にNetUSE AGのBoris ErdmannとKristian Koehntoppによって書かれたPHPLIBと呼ばれるオープンソースライブラリは、PHP3コードを介してセッションを提供していました。

セッションの有効期間は、秒単位ではなく分単位で定義されました。また、デフォルトのライフタイムは1440分、つまり1日でした。PHPLIBのコード行は次のとおりです。

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

Sascha Schumannは1998年から2000年の期間にPHPLIBプロジェクトに関与しました。彼がPHP3セッションコードに精通していることは間違いありません。

その後、PHP4は2000年にネイティブセッションをサポートするようになりましたが、現在はライフタイムが秒単位で指定されています。

私は誰かが分を秒に変換することを気にしたことがないに違いない。その人物はサシャ・シューマンだったと思われます。その値がZendエンジンにコード化されると、構成(php.ini)のデフォルトにもなりました。


3
ユニットを変更するときに24は特別な意味を持っていることを目にします。だから与えられた答えからあなたの答えは私にとって最も理にかなっています。
Markus Malkusch、2016年

1
それは面白い。共有してくれてありがとう!:)
SysVoid 2016年

3
これは本当に面白いです!ありがとう!
AnnaVölkl、

PHP4のデフォルト設定への1つの参照: 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
なぜなら、その数学のオタク数は、調査が示すものとほぼ同じであるため、同じセッション内の2つの要求間の最大時間(20〜30分)です。
dimitar veselinov 2015年

22
@dimitarveselinovどの研究ですか?
Markus Malkusch、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.