Tarayıcı Sözlüğü

Çerezler ile Local Storage Arasındaki Fark Nedir?

Bir web sitesine giriş yaptığınızda oturumunuzun açık kalması, karanlık temayı seçtiğinizde bu tercihin bir sonraki ziyarette de hatırlanması ya da alışveriş sepetinizin kapatıp açtıktan sonra hâlâ dolu olması… Bunların hepsi tarayıcının bilgisayarınızda veri saklamasıyla mümkün olur. Ancak bu saklama işi tek bir yöntemle yapılmaz. En yaygın iki mekanizma çerezler (cookies) ve local storage'dır ve aralarındaki farklar hem geliştiriciler hem de gizliliğine dikkat eden kullanıcılar için önemli sonuçlar doğurur.

Kısa Bir Karşılaştırma Tablosu

Detaylara girmeden önce iki teknolojinin temel özelliklerini yan yana görmek faydalı olur:

Özellik Çerezler (Cookies) Local Storage
Tipik boyut sınırı Çerez başına yaklaşık 4 KB Alan adı başına yaklaşık 5-10 MB
Sunucuya gönderilir mi? Evet, her HTTP isteğinde otomatik olarak Hayır, yalnızca tarayıcıda kalır
Süre Belirlenen son kullanma tarihine kadar Silinene kadar kalıcı
Sunucu tarafından yazılabilir mi? Evet Hayır, sadece JavaScript ile
JavaScript erişimi HttpOnly değilse mümkün Her zaman mümkün
Veri tipi Metin (ad-değer çifti) Metin (anahtar-değer çifti)

Adım Adım: İkisi Arasındaki Farkları Anlamak

  1. Verinin nereye gittiğini kavrayın. En kritik ayrım budur. Bir çerez oluşturulduğunda, tarayıcı o alan adına yaptığınız her istekte çerezi HTTP başlığına ekler. Yani sunucu, siz bir şey yapmadan çerezi görür. Local storage ise tamamen tarayıcı tarafında yaşar; sunucuya gitmesi için JavaScript'in veriyi okuyup açıkça bir istekle göndermesi gerekir. Bu yüzden oturum doğrulama gibi işler geleneksel olarak çerezlerle yapılır.
  2. Boyut farkının pratikte ne demek olduğunu görün. 4 KB'lık bir çerez sınırı, birkaç yüz karakterlik bir kullanıcı kimliği veya token için yeterlidir ama bir formun taslağını, çevrimdışı okuma listesini ya da bir oyunun kayıt dosyasını tutmaya yetmez. Local storage'ın megabaytlar mertebesindeki kapasitesi bu tür ihtiyaçlar için tasarlanmıştır. Ayrıca çerezler her istekte gönderildiği için gereksiz büyük çerezler doğrudan sayfa yükleme süresine yük bindirir; sayfaların yavaş yüklenmesinin gözden kaçan sebeplerinden biridir.
  3. Yaşam sürelerini ayırt edin. Çerezler üçe ayrılır: oturum çerezleri (tarayıcı kapanınca silinir), kalıcı çerezler (belirlenen tarihe kadar durur) ve süresi geçmiş çerezler (tarayıcı hemen atar). Local storage'da son kullanma tarihi kavramı yoktur; veri siz veya kod silmedikçe yıllarca durabilir. Geçici veri için üçüncü bir seçenek olan session storage ise sekme kapanınca temizlenir.
  4. Erişim kapsamını inceleyin. Çerezler yol (path) ve alan adı (domain) bazında sınırlandırılabilir; alt alan adları arasında paylaşılabilir. Local storage ise katı bir şekilde "origin" bazlıdır: protokol, alan adı ve port üçlüsü aynı olmalıdır. https://site.com ile http://site.com farklı depolama alanlarına sahiptir. HTTPS ve sertifika konusunun neden ayrı bir başlık olduğunu bu ayrım da gösteriyor.
  5. Güvenlik profillerini karşılaştırın. Çerezlerde HttpOnly işaretiyle JavaScript'in çereze erişmesi engellenebilir; Secure ile yalnızca şifreli bağlantıda gönderilmesi, SameSite ile siteler arası isteklerde davranışı belirlenebilir. Local storage'da bu koruma katmanlarının hiçbiri yoktur: sayfada çalışan herhangi bir betik, örneğin kötü niyetli bir reklam kodu veya güvensiz bir uzantı, oradaki her şeyi okuyabilir. Bu nedenle hassas kimlik doğrulama verisini local storage'da tutmak yaygın bir tavsiye değildir.
  6. Nasıl temizlendiklerini bilin. Tarayıcı ayarlarında "çerezleri ve site verilerini sil" seçeneği genellikle ikisini birden temizler; ancak sadece "çerezleri sil" diyen bazı araçlar local storage'a dokunmaz. Gizli pencere modunda ise her iki depolama da geçici bir alanda tutulur ve pencere kapanınca yok olur. Önbellek temizlemek ise bunlardan farklıdır; önbellek görselleri ve dosyaları tutar, oturum verinizi değil.

Sık Yapılan Hatalar