CSRF nedir? Cookie'lerdeki HttpOnly, Secure ve SameSite özellikleri neyi korur?
Cevap
CSRF (Cross-Site Request Forgery), kullanıcı başka bir sitedeyken tarayıcının cookie'leri otomatik göndermesinden faydalanıp kullanıcı adına istek yaptırmaktır. Örneğin kötü niyetli bir sayfadaki gizli form, kullanıcının oturum açık olduğu bankaya para transferi isteği gönderir.
<!-- evil.com -->
<form action="https://bank.com/transfer" method="POST">
<input type="hidden" name="to" value="saldirgan" />
<input type="hidden" name="amount" value="10000" />
</form>
<script>document.forms[0].submit()</script>Cookie özellikleri
| Özellik | Ne sağlar? |
|---|---|
HttpOnly | JavaScript (document.cookie) cookie'yi okuyamaz; XSS ile token çalınmasını zorlaştırır |
Secure | Cookie sadece HTTPS üzerinden gönderilir |
SameSite=Strict | Cookie hiçbir cross-site istekte gönderilmez |
SameSite=Lax | Sadece üst seviye GET navigasyonlarında gönderilir; cross-site POST/fetch'te gönderilmez (Chrome'un varsayılanı) |
SameSite=None | Her yerde gönderilir, Secure zorunludur (üçüncü parti embed'ler için) |
Set-Cookie: session=abc; HttpOnly; Secure; SameSite=Lax; Path=/CSRF korunma yöntemleri
SameSite=Lax/Strictcookie'ler (ilk savunma hattı).- CSRF token: Sunucunun ürettiği, formla/başlıkla gönderilen ve saldırganın bilemeyeceği bir değer.
Origin/Sec-Fetch-Sitebaşlıklarını sunucuda kontrol etmek.- Durum değiştiren işlemleri asla GET ile yapmamak.
- Hassas işlemlerde yeniden kimlik doğrulama.
Not: Token'ı Authorization header'ında gönderen (cookie kullanmayan) API'ler CSRF'e karşı doğal olarak korunur ama bu kez token'ın XSS'e karşı nasıl saklandığı önemli hale gelir. HttpOnly CSRF'i önlemez; XSS'e karşı koruma sağlar.
İlgili Tarayıcı & Web API'leri soruları
- Bir URL'yi tarayıcıya yazıp Enter'a bastığınızda neler olur?
- Web Worker nedir? Service Worker'dan farkı nedir?
- IntersectionObserver ne işe yarar? Örnek kullanım verin.
- Tarayıcı önbelleği nasıl çalışır? Cache-Control başlıkları nelerdir?
- localStorage, sessionStorage, cookie ve IndexedDB arasındaki farklar nelerdir?
- script etiketinde async ile defer arasındaki fark nedir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.