Mengapa masa pakai sesi standar 24 menit (1440 detik)?

101

Saya telah melakukan beberapa penelitian tentang Penanganan Sesi PHP dan menemukan session.gc_maxlifetimenilai 1440 detik. Saya bertanya-tanya mengapa nilai standarnya 1440 dan bagaimana cara menghitungnya? Apa dasar penghitungan ini?

Berapa lama waktu yang masuk akal untuk mempertahankan sesi? Nilai min / maks apa untuk session.gc_maxlifetime yang akan Anda rekomendasikan? Semakin tinggi nilainya, semakin rentan Aplikasi Web untuk Sesi Pembajakan, menurut saya.

Anna Völkl
sumber
+1Pertanyaan bagus. Sesuatu yang berhubungan dengan, 60 x 12 x 2 ... Mari kita tunggu jawaban yang menarik ... :)
Praveen Kumar Purushothaman
4
Berikut baris kode sumber di mana nilai default ditetapkan . Mereka yang akrab dengan GIT mungkin dapat melacak riwayatnya dan mungkin menemukan tiket RFC atau bug (jika ada).
Álvaro González
1
@Anil: Diskusi ini tidak menjawab pertanyaan saya.
Anna Völkl
2
@ ÁlvaroG.Vicario Saya menemukan perubahannya: github.com/php/php-src/commit/… namun tidak ada dokumentasi terkait yang relevan. 1440memang jumlah menit asli untuk batas waktu, jadi kurasa kita tidak akan pernah tahu kecuali seseorang melacak Sascha Schumann.
Dai
6
Saya menemukan alamat email Sascha dan menghubunginya tentang hal ini, saya akan memberi tahu orang-orang jika dia merespons.
Dai

Jawaban:

183

Jawaban sebenarnya mungkin sangat mirip dengan ini:

Kembali selama hari PHP3, PHP sendiri tidak memiliki dukungan sesi.

Namun pustaka sumber terbuka bernama PHPLIB, awalnya ditulis oleh Boris Erdmann dan Kristian Koehntopp dari NetUSE AG, menyediakan sesi melalui kode PHP3.

Masa pakai sesi ditentukan dalam menit , bukan detik. Dan masa pakai default adalah 1440 menit, atau tepat satu hari. Ini baris kode dari PHPLIB:

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

Sascha Schumann terlibat dengan proyek PHPLIB sekitar periode 1998 hingga 2000. Tidak diragukan lagi dia sudah familiar dengan kode sesi PHP3.

Kemudian PHP4 keluar pada tahun 2000 dengan dukungan sesi asli, tetapi sekarang umurnya ditentukan dalam hitungan detik.

Saya berani bertaruh seseorang tidak pernah repot-repot mengubah menit menjadi detik. Kemungkinan orang itu adalah Sascha Schumann. Setelah nilai itu dikodekan ke dalam mesin Zend, itu menjadi konfigurasi ( php.ini) default juga.

CXJ
sumber
3
Ini mengejutkan seseorang bahwa 24 mendapat arti khusus saat mengganti unit. Jadi dari jawaban yang diberikan, jawaban Anda paling masuk akal bagi saya.
Markus Malkusch
1
Itu menarik. Terima kasih telah berbagi! :)
SysVoid
3
Ini sangat menarik! Terima kasih!
Anna Völkl
Satu referensi ke pengaturan default PHP4: github.com/php/php-src/blob/PHP-4.0/ext/session/session.c
CXJ
Menurut dokumentasi PHP, umur sesi diatur dalam hitungan detik: php.net/manual/en/…
lemhannes
-16

1440 digunakan dalam kalkulasi waktu yang mengubah detik menjadi jam / hari.

  • 1 hari = 24 jam (jam * 24 = 1 hari)
  • hari = 1440 menit (menit * 60 * 24 = 1 hari)
  • hari = 86400 detik (detik * 60 * 1440 = 1 hari)

Contoh:

9 hari [* 60] = 540 [* 1440] = 777600 detik

Hal yang sama berlaku sebaliknya:

777600 detik [/ 1440] = 540 [/ 60] = 9 hari

Steve Terjeson
sumber
14
jadi mengapa ini seumur hidup sesi standar?
Félix Gagnon-Grenier
3
Karena ini adalah angka kutu buku matematika yang kira-kira sama dengan yang ditunjukkan oleh penelitian adalah waktu terbesar antara dua permintaan dalam sesi yang sama (20-30 menit).
dimitar veselinov
22
@dimitarveselinov Penelitian yang mana?
Markus Malkusch