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

ÖzellikNe sağlar?
HttpOnlyJavaScript (document.cookie) cookie'yi okuyamaz; XSS ile token çalınmasını zorlaştırır
SecureCookie sadece HTTPS üzerinden gönderilir
SameSite=StrictCookie hiçbir cross-site istekte gönderilmez
SameSite=LaxSadece üst seviye GET navigasyonlarında gönderilir; cross-site POST/fetch'te gönderilmez (Chrome'un varsayılanı)
SameSite=NoneHer 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/Strict cookie'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-Site baş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.

  1. Bir URL'yi tarayıcıya yazıp Enter'a bastığınızda neler olur?OrtaTarayıcı & Web API'leriFrontend
  2. Web Worker nedir? Service Worker'dan farkı nedir?ZorTarayıcı & Web API'leriFrontend
  3. IntersectionObserver ne işe yarar? Örnek kullanım verin.OrtaTarayıcı & Web API'leriFrontend
  4. Tarayıcı önbelleği nasıl çalışır? Cache-Control başlıkları nelerdir?OrtaTarayıcı & Web API'leriFrontend
  5. localStorage, sessionStorage, cookie ve IndexedDB arasındaki farklar nelerdir?OrtaTarayıcı & Web API'leriFrontend
  6. script etiketinde async ile defer arasındaki fark nedir?KolayTarayıcı & Web API'leriFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle