PHP oturumları benim anlayış doğru mudur?

3 Cevap php

Ben oturumları dahili çalışmak nasıl ilgi oldum, ama ben C az bilgiye sahip (ve bu nerede için PHP kaynak bakmak için emin değilim).

Bu benim şu anda oturumların anlıyoruz:

  1. Bir oturumu başlattığınızda kullanıcı bir tanımlama içinde saklanan bir session id atanır.
  2. Session data ({[) 0 (]} ile) kaydedilmiş olduğunda bu ilgili oturum kimliği ve bitiş süresi ile, dosya sisteminde saklanır.

Bu doğru mudur? Ayrıca session id oluşturulduğu yöntem nedir? Ben o zamana dayalı olduğunu varsayalım ama ne iki kullanıcı aynı anda bir istek göndermek? Yerine ne yöntemler dahili onları aynı id almak önlemek için?

Teşekkürler,

3 Cevap

Benim anlayış takip iç oturum işleme sürecinin olduğunu:

session_start is called, PHP is looking for a parameter from the client that was sent via POST, GET, or in a cookie (depending on the configuration; see session.use_cookies , session.use_only_cookies , and session.use_trans_sid ) with the name of the value of session.name başlamış bir oturumun oturum kimliği kullanmak için zaman .

Geçerli bir oturum kimliği bulursa, bunun bir kimliği veya kullanımı yasak, PHP bulamazsanız. session.save_handler ) to load the data into $_SESSION (bkz. depolama oturum verilerini almaya çalıştığında (session.hash_function ) on data of a source that generates random data (see session.entropy_file bakınız) karma bir işlevi kullanarak yeni bir kimlik oluşturur.

Çalışma sırasında veya sonunda session_write_close is called, the session data in $_SESSION belirlenen depoya uzakta saklanır.

Php kaynak ext/session/session.c içinde php_session_create_id bak

Bu gibi gider:

  • Günün zaman olsun
  • uzaktan ip adresini almak
  • IP adresi ile birlikte, şimdiki zaman saniye ve mikrosaniye ile bir dize oluşturmak
  • yapılandırılmış içine doyurmaya session hash function (MD5 veya SHA1 olarak)
  • yapılandırılmışsa, bir entropy file bazı ek Rasgeleliği beslemek
  • Nihai hash değeri üretmek

Yani bir kopyasını almak oldukça zordur. Ancak, bir saldırganın potansiyel hedef kabul edecek session_id seçmelerini sağlar oturumu tespitin kavramı ile kendinizi tanımak gerekir - iyi bir astar için Sessions and Cookies bkz.

Oturum kimliği muhtemelen harf ve rakamlardan oluşan rasgele bir dizedir. PHP benzersiz ve dolayısıyla iki kullanıcılar için aynı olamayacağını görmek için onay vermedi Ayrıca eğer o garip olurdu. Gibi (1) ve (2), ben haklısınız derdim, ama son zamanlarda PHP ile çalıştı değil, bu yüzden inan bana değil çekinmeyin.