Php session id nasıl eşsizdir

6 Cevap php

Php session id nasıl eşsizdir? Ben aynı Sessionıd almak asla iki kullanıcılara güvenmek gerektiğini okudum çeşitli şeylerden izlenim var. Bir GUID değil mi?

6 Cevap

Session_id gerçekten çoğaltılamaz, ancak olasılık çok düşüktür. Eğer adil bir trafik ile bir web sitesi varsa, bu olabilir bir zamanlar size web sitesi hayatında olur, ve sadece tek bir oturum için bir kullanıcıyı rahatsız edecek.

Bu çok yüksek bir trafik web sitesi veya banka endüstrisi için bir hizmet oluşturmak için beklediğiniz sürece umurumda değmez.

Sevk gibi çok özel değil. Varsayılan konfigürasyonda gettimeofday sonucu (korkunç benzersiz değil) dahil olmak üzere çeşitli şeylerin bir karma sonucudur, ama endişeli iseniz, bunu gibi, / dev / urandom bazı entropi çizmek için yapılandırmanız gerekir

ini_set("session.entropy_file", "/dev/urandom");
ini_set("session.entropy_length", "512");

Onlar kullandığınız gerçek algoritması için the code in "php_session_create_id" için arama.

Edited to add: There's a DFA random-number generator seeded by the pid, mixed with the time in usecs. It's not a firm uniqueness condition especially from a security perspective. Use the entropy config above.

Update:

As of PHP 5.4.0 session.entropy_file defaults to /dev/urandom or /dev/arandom if it is available. In PHP 5.3.0 this directive is left empty by default. PHP Manual

Eğer (bu varsayılan MD5 aracılığıyla oluşturulan bir 128bit numara) kimliği oluşturulur şekilde özelleştirmek istiyorsanız alternatif bir karma nesil fonksiyonu yükleyebilirsiniz. Bkz http://www.php.net/manual/en/session.configuration.php#ini.session.hash-function

PHP oturumları hakkında daha fazla bilgi için ayrıca oturum sabitleme hakkında ve kaçırmak diğer makalelere bağlantılar bu mükemmel yazı http://shiflett.org/articles/the-truth-about-sessions deneyin.

Ben bu konuda bir onay bulundu değil ama bir session id zaten o kimliği ile bir tane oluşturmadan önce varsa ben php kontrolleri inanıyorum.

Birisi aktif bir kullanıcı oturum kimliğini öğrenince kaçırma sorun insanların endişe oturumu. Bu this page php.net ve this paper on session fixation görebilirsiniz bu konuda daha fazla bilgi için, birçok şekilde önlenebilir

Size of session_id
Assume that seesion_id is uniformly distributed and has size=128 bits. Assume that every person on the planet logs in once a day with a persistent an new session for 1000 years.

num_sesion_ids  = 1000*365.25 *7*10**9 < 2**36
collission_prob < 1 - (1-1/2**82)**(2**36)  ≈ 1 - e**-(1/2**46) 
                ≈ 1/2**46 

Bu yüzden, bir ya da daha fazla çarpışma olasılığı 70000 milyarlarca az biridir. Dolayısıyla session_id ait bir 128-bit boyutu yeterince büyük olmalıdır. Diğer açıklamalarda belirtildiği gibi, SESSION_MANAGER zamanda yeni session_id zaten var olmadığını kontrol edebilirsiniz.

Randomness
Therefore the big question I think is whether the session_id:s are generated with good pseudo randomness. On that you can never be sure, but I would recommend using a well known, and frequently used standard solution for this purpose (as you probably already do).

Çarpışmalar nedeniyle kontrol için kaçınılması bile hackerlar, her nasılsa tahmin nitelikli yapmak ve aktif session_id bulamıyorum ki, rasgelelik ve session_id büyüklüğü, önemlidir: s büyük olasılık ile.

Hayır, session id GUID değil, ama sunucu tarafında saklanır gibi iki kullanıcı aynı session id almak gerekir.