hosting

Çerez Güvenliği: Bayraklar, Kapsam ve Oturum Korumasının Temeli

Üç temel bayrağın işlevi, SameSite değerleri, kapsam kararının riski, oturum yönetimi pratikleri ve oturum verisinin saklanması. Çerez Güvenliği: Bayraklar…

Çerez Güvenliği: Bayraklar, Kapsam ve Oturum Korumasının Temeli
İçindekiler
  1. Çerez Neden Kritik?
  2. Üç Temel Bayrak
  3. Şifreli Bağlantı Zorunluluğu
  4. Siteler Arası İstek Koruması
  5. Kapsam Kararı
  6. Oturum Yönetimi Pratikleri
  7. Oturum Verisinin Saklanması
  8. Kontrol Listesi
  9. Sonuç
  10. Sıkça Sorulan Sorular (SSS)
  11. HttpOnly bayrağı neyi engeller?
  12. SameSite için hangi değeri seçmeliyim?
  13. Çerez kapsamını nasıl belirlemeliyim?
  14. Çıkış işleminde ne yapmalıyım?

Çerez Güvenliği: Bayraklar, Kapsam ve Oturum Korumasının Temeli

Oturum yönetimi çalışıyor, kullanıcılar giriş yapabiliyor. Ama çerezinizin taşıdığı birkaç bayrak, o oturumun çalınıp çalınamayacağını belirliyor.

Bu yazı, çerez ayarlarının güvenlik etkisini ve hosting tarafında nasıl yapılandırılacağını ele alıyor.

Çerez Neden Kritik?

Oturum çerezi, kullanıcının kimliğinin taşıyıcısıdır:

  • Her istekte otomatik gönderilir. Tarayıcı bunu kendi yapar.
  • Kimlik kanıtı yerine geçer. Şifre tekrar sorulmaz.
  • Ele geçirilirse oturum devralınır. Şifre bilmeye gerek kalmaz.

Üçüncü madde tehdidin özünü anlatır: oturum çerezini ele geçiren biri, şifrenizi hiç bilmeden hesabınıza erişebilir.

Bu yüzden çerez ayarları, şifre politikanız kadar önemlidir — hatta bazı senaryolarda daha önemlidir.

Üç Temel Bayrak

Her oturum çerezinde bulunması gereken ayarlar:

Bayrak Neyi engeller
HttpOnly JavaScript'in çerezi okumasını
Secure Şifresiz bağlantıda gönderilmesini
SameSite Başka siteden gelen isteklerde gönderilmesini

Birinci bayrak, betik enjeksiyonu saldırılarının en kârlı sonucunu keser: sayfaya kötü niyetli bir betik enjekte edilse bile, oturum çerezini okuyup dışarı gönderemez.

Bu bayrağın maliyeti yoktur — çerezi JavaScript'ten okumaya zaten ihtiyacınız olmamalıdır. Sunucu tarafı oturum yönetiminde çerez yalnızca tarayıcı ile sunucu arasında taşınır.

Şifreli Bağlantı Zorunluluğu

İkinci bayrak, çerezin şifresiz bağlantı üzerinden hiç gönderilmemesini sağlar:

  1. Kullanıcı şifreli bağlantıda giriş yapar
  2. Bir yerde şifresiz bir bağlantıya tıklar
  3. Bayrak yoksa çerez o istekte de gönderilir
  4. Aradaki herhangi bir nokta onu okuyabilir

Üçüncü madde gerçek bir risktir çünkü sitenizde tek bir şifresiz kaynak bile olsa, çerez oradan sızabilir.

Bu bayrağı açmadan önce sitenizin tamamen şifreli çalıştığından emin olun — aksi hâlde şifresiz sayfalarda oturum tanınmaz ve kullanıcılar sürekli çıkış yapmış görünür.

Siteler Arası İstek Koruması

Üçüncü bayrak, farklı bir siteden tetiklenen isteklerde çerezin gönderilip gönderilmeyeceğini kontrol eder. Üç değer alır:

  • Katı: Dış kaynaklı hiçbir istekte gönderilmez — en güvenli.
  • Gevşek: Normal bağlantı tıklamalarında gönderilir, form gönderimlerinde gönderilmez.
  • Yok: Her zaman gönderilir — şifreli bağlantı zorunludur.

Katı ayarın bir yan etkisi vardır: başka bir siteden gelen kullanıcı, oturumu açık olsa bile giriş yapmamış görünür — çünkü ilk istekte çerez gönderilmez.

Bu, arama motorundan gelen kullanıcılar için kafa karıştırıcı olabilir. Çoğu site için gevşek ayar doğru dengedir: bağlantı tıklamalarında oturum korunur, ancak dış kaynaklı form gönderimleri engellenir.

Kapsam Kararı

Çerezin hangi adreslerde geçerli olacağı ayrı bir güvenlik kararıdır:

Kapsam Sonuç
Yalnızca ana alan adı Alt alan adları erişemez — güvenli
Tüm alt alan adları Her alt alan adı okuyabilir — riskli
Belirli bir dizin Daha dar kapsam

İkinci satırın riski somuttur: alt alan adlarını kapsayan bir çerez, o alt alan adlarından biri ele geçirilirse okunabilir hâle gelir.

Bu, terk edilmiş bir alt alan adı kaydının neden ciddiye alınması gerektiğinin de cevabıdır. Kapsamı gerçekten ihtiyaç duyduğunuz kadar dar tutmak, bu riski tamamen ortadan kaldırır.

Oturum Yönetimi Pratikleri

Bayrakların ötesinde, oturumun kendisiyle ilgili önlemler:

  1. Giriş sonrası oturum kimliğini yenileyin. Sabitleme saldırısını engeller.
  2. Yetki değişiminde de yenileyin.
  3. Çıkışta sunucu tarafında da silin. Yalnızca çerezi temizlemek yetmez.
  4. Boşta kalma süresi tanımlayın.
  5. Mutlak süre sınırı koyun. Aktif olsa bile.

Birinci madde bilinen bir saldırıyı önler: saldırgan kurbana bilinen bir oturum kimliği verip, kurban giriş yaptıktan sonra aynı kimlikle oturuma katılabilir. Giriş anında kimliği yenilemek bu yolu kapatır.

Üçüncü madde de sık atlanır — çerezi silmek yalnızca tarayıcı tarafını temizler. Sunucudaki oturum kaydı hâlâ geçerliyse, o kimliği elinde tutan biri kullanmaya devam edebilir.

Oturum Verisinin Saklanması

Paylaşımlı hostingde oturum verisi genellikle dosya olarak tutulur. Dikkat edilecekler:

  • Oturum dizini web kökü dışında olmalıdır.
  • Ortak dizin paylaşılmamalıdır. Hesabınıza özel olmalı.
  • Temizlik düzenli çalışmalıdır. Eski dosyalar birikmesin.
  • Hassas veri oturumda tutulmamalıdır.

İkinci madde eski yapılandırmalarda gerçek bir risktir: oturum dosyaları tüm hesaplar için ortak bir dizinde tutuluyorsa, aynı sunucudaki başka bir hesap onları okuyabilir.

Modern Linux hosting hizmeti yapılandırmalarında oturum dizini hesap bazında ayrılır; yine de kendi uygulamanızda dizin yolunu açıkça tanımlamak en güvenli yoldur.

Kontrol Listesi

  1. Oturum çerezinde HttpOnly bayrağı var mı?
  2. Secure bayrağı var mı ve site tamamen şifreli mi?
  3. SameSite değeri tanımlı mı?
  4. Çerez kapsamı gereğinden geniş mi?
  5. Giriş sonrası oturum kimliği yenileniyor mu?
  6. Çıkışta sunucu tarafı temizleniyor mu?
  7. Oturum dizini web kökü dışında mı?
  8. Oturum süreleri tanımlı mı?

İlk üç madde bir yapılandırma satırıyla halledilir ve en yüksek getiriyi sağlar. Bu kontrolleri tarayıcının geliştirici araçlarında çerez sekmesinden gözle doğrulayabilirsiniz.

Sonuç

Çerez güvenliğinin temeli tek bir gerçekte yatar: oturum çerezini ele geçiren biri, şifrenizi hiç bilmeden hesabınıza erişebilir. Üç bayrak bu riski büyük ölçüde kapatır ve hiçbirinin işlevsel maliyeti yoktur. HttpOnly, enjekte edilen bir betiğin çerezi okuyup dışarı göndermesini engeller. Kapsam kararında ise cimri olun — alt alan adlarını kapsayan bir çerez, o alt alan adlarından biri ele geçirilirse okunabilir hâle gelir. Ve çıkışta yalnızca çerezi silmek yetmez, sunucudaki oturum kaydı da temizlenmelidir.

Sıkça Sorulan Sorular (SSS)

HttpOnly bayrağı neyi engeller?

JavaScript'in çerezi okumasını. Sayfanıza kötü niyetli bir betik enjekte edilse bile oturum çerezini okuyup dışarı gönderemez. Sunucu tarafı oturum yönetiminde çerezi JavaScript'ten okumaya ihtiyacınız olmadığı için bu bayrağın hiçbir maliyeti yoktur.

SameSite için hangi değeri seçmeliyim?

Çoğu site için gevşek ayar doğru dengedir: bağlantı tıklamalarında oturum korunur, dış kaynaklı form gönderimleri engellenir. Katı ayar daha güvenlidir ama başka siteden gelen kullanıcı ilk istekte giriş yapmamış görünür.

Çerez kapsamını nasıl belirlemeliyim?

İhtiyacınız olan en dar kapsamı seçin. Alt alan adlarını kapsayan bir çerez, o alt alan adlarından biri ele geçirilirse okunabilir. Alt alan adları arasında oturum paylaşımına gerçekten ihtiyacınız yoksa kapsamı ana alan adıyla sınırlayın.

Çıkış işleminde ne yapmalıyım?

Yalnızca çerezi silmek yetmez — bu sadece tarayıcı tarafını temizler. Sunucudaki oturum kaydını da geçersiz kılın, aksi hâlde o kimliği elinde tutan biri kullanmaya devam edebilir. Ayrıca giriş anında ve yetki değişiminde oturum kimliğini yenileyin.