ASP.NET'te Çerez (Cookie) Kullanımı

Çerezlerle ilgili detaylı bilgileri bu yazıda bulabilirsiniz.

Giriş

Bazı kaynaklarda, HTTP Cookie, Web Cookie, Browser Cookie, Session Cookie olarak da karşımıza çıkan COOKIE'ler (çerezler), internet sitelerinin bilgisayarımıza kaydettiği küçük metin dosyalarıdır.

Genel kullanım amacı, siteye gelen ziyaretçileri, bir sonraki ziyaretlerinde hatırlamaktır. Pratikte çerezler, web server tarafından tarayıcıya gönderilen ve client'ta kaydedilen ufak metin dosyalarıdır.

Kullanım amacı

Çerezler, kullanıcı kimlik doğrulama ve tanımlama, kullanıcı tercihleri, alışveriş sepeti, vb. bilgileri client tarafında tutmak için kullanılır.

Ayrıca, bilgilerin bir sayfadan başka bir sayfaya taşınması için de kullanılır.

Güvenli midir?

Aslında direkt olarak evet ya da hayır şeklinde cevap vermek zordur. Çerezde tutulan bilgiler, kullanıcının hesabına giriş yapan biri tarafından rahatlıkla çalınabilir. Çerezler birer yazılım / program, virüs ya da çalıştırılabilir uygulama değildirler. Virüs ya da malware taşıyamazlar. Öte yandan, kullanıcı aktivitelerini saklamak için kullanılabilirler.

Çerez kullanımı

1. yol - HttpCookies sınıfını kullanarak

Yazma

HttpCookie musteriCookie = new HttpCookie("Musteri");
musteriCookie.Value = TextBox1.Text;
musteriCookie.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(musteriCookie);

Okuma

string adsoyad = Request.Cookies["Musteri"].Value;

2. yol - Direkt Response'u kullarak

Yazma

Response.Cookies["Musteri"].Value = TextBox1.Text;
Response.Cookies["Musteri"].Expires = DateTime.Now.AddDays(1);

Okuma

string adsoyad = Request.Cookies["Musteri"].Value;

3. yol - Aynı isimle birden fazla değer tutmak

Yazma

Response.Cookies["Musteri"]["AdSoyad"] = TextBox1.Text;
Response.Cookies["Musteri"]["DogumYeri"] = TextBox2.Text;
Response.Cookies["Musteri"]["DogumTarihi"] = TextBox3.Text;
Response.Cookies["Musteri"]["AnneAdi"] = TextBox4.Text;
Response.Cookies["Musteri"]["BabaAdi"] = TextBox5.Text;
Response.Cookies["Musteri"].Expires = DateTime.Now.AddDays(1);

Okuma

string adSoyad = Request.Cookies["Musteri"]["AdSoyad"];
string anneAdi = Request.Cookies["Musteri"]["AnneAdi"];
string babaAdi = Request.Cookies["Musteri"]["BabaAdi"];

Çerezleri silme

Silme işlemi için 3 konuya dikkat etmek gerekir. 1) Öncelikle çerezin var olup olmadığını test etmek gerekir, 2) Sayfayı tekrar yüklemek gerekir. 3) Çerezi silmek için .Expires özelliğini kullanmalıdır.

if (Request.Cookies["Musteri"] != null)
{
    Response.Cookies["Musteri"].Expires = DateTime.Now.AddDays(-1);
    Response.Redirect("ISTEDIGINIZSAYFA.aspx");
}

Eğer yukarıdaki kod işinizi görmezse şu kodu da deneyebilirsiniz:

if (Request.Cookies["Musteri"] != null)
{
    HttpCookie musteriCookie = Request.Cookies["Musteri"];
    musteriCookies.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(musteriCookie);
    Response.Redirect("ISTEDIGINIZSAYFA.aspx");
}

HttpCookie sınıfı özellikleri

  • Domain: Çerezin ait olduğu domain.
  • Expires: Çerezin son bulma tarihi.
  • HasKeys: Çerezin alt değerleri varsa True yoksa False döndürür.
  • Name: Çerezin adı.
  • Path: çerez ile iletmek için sanal yol ayarlar.
  • Secure: True ise sadece güvenli bağlantı ile okunur / yazılır (https://)
  • Value: Çerezin değeri.
  • Values: Çerezin taşıyacağı birden fazla değer varsa kullanılır.

Çerezlerin sınırları

  1. En fazla 4096 byte bilgi taşıyabilir
  2. Her bir websitesi için en fazla 20 çerez oluşturulabilir
  3. Kullanıcı, tarayıcı özelliklerinden çerez kullanımını kapatabilir.

Kullanıcı, tarayıcısının cookie özelliğini kapattığını (veya kapatmadığını) şu yolla anlayabiliriz:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Browser.Cookies)
    {
        // Çerez desteği var
    }
    else
    {
        // Çerez desteği yok
    }
}

Diğer hususlar

  • Kullanıcının bilgisayarındaki her bir farklı tarayıcı için farklı çerezler tutulur. Yani IE'de kaydedilen bir çerez, MF veya GC tarafından okunamaz.
  • Maks. 4K lık bilgi tutabildiğini unutmamalı!
  • Güvenliği de düşünüp bilgileri şifreleyerek kaydetmek her zaman mantıklıdır.
  • Bilgisayara format atıldığında veya tarayıcı geçmişi temizlendiğinde çerezler de silinir.

Herkese kolay gelsin.