Session Cookie Güvenliği: Secure, HttpOnly, SameSite Nasıl Kontrol Edilir
Session hijacking saldırılarının çoğu aslında basit bir hatadan kaynaklanıyor: bir cookie özniteliğinin eksik olması. XSS saldırısı ile okunmasını engellemek için HttpOnly yok, HTTP üzerinden gitmesini önlemek için Secure yok, ya da SameSite=None hiç geri alınmadı. Her biri tek satırda düzeltilir, ama bilmezsen görmezsin.
Doğru bir session cookie şu flaglarla ayarlanmalı: Secure, HttpOnly, SameSite=Lax (ya da Strict), Path=/ ve Domain özniteliği hiç olmamalı. İdeal olarak __Host- ön eki kullanılırsa tarayıcı bunu sadece HTTPS üzerinden kabul eder.
Secure bayrağı cookie'nin sadece HTTPS bağlantısında gönderilmesini sağlar. Eksikse, saldırgan HTTP trafiğini dinleyip session cookie'yi çalabilir. Basit ama etkili.
HttpOnly cookie'ye JavaScript erişimini kapatır. XSS payload'u çalsa bile document.cookie ile okunamaz. Çoğu session hijacking burada başarısız olur.
SameSite=Lax cross-site request forgery (CSRF) saldırılarını engeller. Cookie sadece aynı site içinden ya da güvenli üst düzey navigasyonda gönderilir. SameSite=None ayarlanmışsa ve Secure olmadıysa, bu bir kırmızı bayrak.
Domain özniteliği olmadığında cookie sadece belirtilen domain'e gider. Domain=.example.com ise, unutulan her subdomain'e de yayılır ve saldırgan bir zayıf subdomain'i ele geçirip ana session'ı çalabilir.
Muhammad Ali Mughal'ın yazısında gerçek Set-Cookie başlıkları ve her flagin hangi saldırıyı durdurduğu gösteriliyor. Denetim listesi bile var, pull request template'ine yapıştırabilirsin.
Bir Laravel ya da Node uygulaması yazıyorsan, Set-Cookie başlıklarını bir kez kontrol et. İki dakika sürer, ama session hijacking'ten seni kurtarır.
0 yorum