Çerezler ve oturumlar nedir ve birbirleriyle nasıl ilişkilidir?


86

Çerezleri ve oturumları profesyonel olarak anlamaya çalışıyorum. Bir tarayıcı bir sunucuya bağlandığında, sunucunun tarayıcıdan istemci tarayıcısı çerezler klasörüne "phpsessid" içeren bir çerezi "yapıştırmasını" "istediğini" biliyorum.

Artık "phpsessid" e sahip olduğumuza göre, istemci sunucuya girerse, tarayıcı sunucuya "phpsessid" gönderir ve sunucu tmp klasörüne bir göz atar ve eğer bir eşleşme varsa kullanıcının sahip olduğu her veriyi geri yükler. bu müşteri, ancak süreçle biraz kafam karıştı.

Biri bir oturum ve tanımlama bilgisi oluşturma süreçlerini - sahne arkasında neler olduğunu anlamama yardımcı olabilirse minnettar olacağım.


Görünüşe göre neler olduğunu zaten biliyorsun. Hangi kısımda aydınlanmak istersiniz? HTTP / tanımlama bilgisi bölümü veya PHP oturum deposunu nasıl yükler?
mario

Tarayıcının phpsessid ile kaydettiği tanımlama bilgisi, oturumlar ve tanımlama bilgileri oluşturmak için istemciyi tanımlayan phpsessid mi?
Blanktext

Tarayıcının sahip olduğu tanımlama bilgisi, sunucuya "hey bu bölümü biliyorum" diyen php oturum kimliğini içerir, sunucu daha sonra oturum verilerini alır (örneğin / tmp / 'dan) ve $ _SESSION kullanıcısını geri yükler
gün

Evet biliyorum, ama soruyorum, bu "phpsessid" oturumları ve çerezleri oluşturmadan önce istemciyi tanımlamak için mi kullanılıyor, bu phpsessid çerez verilerinin ve istemci bilgisayarın içine ve sunucu tmp klasöründeki oturum dosyasının içine dahil mi ?
Blanktext

Yanıtlar:


173

Hadi bunun üzerinden geçelim:

Çerezler ve oturumlar , tarayıcının yaptığı farklı istekler arasında uygulamanın durumunu korumanın her iki yoludur. Onlar sayesinde, örneğin, StackOverflow'da her sayfa talep ettiğinizde oturum açmanıza gerek kalmaz.

Kurabiye

Çerezler, verileri bir anahtar = değer çiftlerinde tutan küçük veri bitleridir (maksimum 4KB uzunluğunda):

name=value; name2=value2

Bunlar ya JavaScript tarafından ya da bir HTTP başlığı kullanılarak sunucu üzerinden ayarlanır .

Çerezler, bir son kullanma tarih saat kümesine sahiptir, örneğin HTTP başlıkları kullanılarak:

Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT

Bu, tarayıcının yaklaşık 9 yıl içinde süresi dolacak olan name2değerine sahip bir çerez ayarlamasına neden olur value2.

Çerezler , kullanıcı içeriklerini kolayca değiştirebildiği için oldukça güvensiz kabul edilir . Bu nedenle, çerez verilerini her zaman doğrulamalısınız . Bir çerezden aldığınız şeyin mutlaka beklediğiniz gibi olduğunu varsaymayın.

Çerezler genellikle tarayıcıdan bir kullanıcı adı ve özel bir hash gönderildiği ve sunucunun erişimi onaylamak için bunları veritabanında kontrol ettiği oturum açma durumunu korumak için kullanılır.

Çerezler ayrıca oturum oluşturmada sıklıkla kullanılır .

Oturumlar

Oturumlar biraz farklıdır. Her kullanıcı , doğrulama için sunucuya çerez veya GET değişkeni tarafından geri gönderilen bir oturum kimliği alır .

Oturumlar genellikle kısa sürelidir, bu da onları uygulamalar arasında geçici durumdan tasarruf etmek için ideal kılar. Oturumlar ayrıca kullanıcı tarayıcıyı kapattığında da sona erer.

Değişkenlerin kendisi sunucuda tutulduğundan, oturumlar tanımlama bilgilerinden daha güvenli kabul edilir . Şu şekilde çalışır:

  1. Sunucu bir oturum açar (HTTP başlığı aracılığıyla bir tanımlama bilgisi ayarlar)
  2. Sunucu bir oturum değişkeni belirler.
  3. Müşteri değişiklikleri sayfası
  4. Müşteri, 1. adımdaki oturum kimliğiyle birlikte tüm çerezleri gönderir.
  5. Sunucu, oturum kimliğini tanımlama bilgisinden okur.
  6. Sunucu, bir veritabanındaki (veya bellekteki vb.) Bir listeden oturum kimliğiyle eşleşir.
  7. Sunucu bir eşleşme bulur, artık $_SESSIONsüper küreselde mevcut olan değişkenleri okur .

PHP bir eşleşme bulamazsa, yeni bir oturum başlatır ve 1-7 arasındaki adımları tekrar eder.

Hassas bilgileri bir oturumda saklayabilirsiniz çünkü sunucuda tutulur, ancak kullanıcı, diyelim ki, güvenli olmayan bir WiFi üzerinden oturum açtıysa, oturum kimliğinin yine de çalınabileceğini unutmayın. (Bir saldırgan çerezleri koklayabilir ve kendi başına ayarlayabilir, değişkenleri görmez, ancak sunucu saldırganı kullanıcı olarak tanımlayacaktır).


İşin özü bu. Her iki konuda da PHP kılavuzu hakkında daha fazla bilgi edinebilirsiniz.


1
Peki bu, oturumların çalışması için çerezlerin açılması gerektiği anlamına mı geliyor?
bigpotato

1
@Edmund: Çoğu durumda, evet. Bununla birlikte, oturum kimliklerinin GET değişkeni aracılığıyla iletilmesi için ayarlayabilirsiniz (bu, session_id'nin her sayfaya eklenmesi gerektiği anlamına gelir ( hello.php?sid=cbe709ac7bed98f7ecb89713)
Madara's Ghost

Android veya iPhone cihazlarında yakın tarayıcı tam olarak ne demektir? uygulamayı durdur? cihaz kapatılsın mı? tüm sekmeleri kapat ve çık? etc
Vandervals

2
@SurajJain "Beni hatırla" çerezleri olmasaydı, daha uzun süre kalırdı.
Madara's Ghost

4
diğer soru: Kullanıcı tarayıcıyı kapattığında, sunucu bu olay tarafından nasıl bilgilendirilir, böylece sunucu bu oturum kimliğini siler? yoksa bir süre sonra otomatik olarak mı sona eriyor?
user2774480
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.