← Tüm yazılar

CSRF (Siteler Arası İstek Sahteciliği) Nedir ve Nasıl Önlenir?

13 Eylül 2026

CSRF (Siteler Arası İstek Sahteciliği) Nedir ve Nasıl Önlenir?

Siteler Arası İstek Sahteciliği (Cross-Site Request Forgery, CSRF), oturumu açık bir kullanıcıya, farkında olmadan kendi adına bir işlem yaptırmaktır: parola değiştirmek, para transferi, e-posta adresini güncellemek. Saldırgan kullanıcının oturum bilgisini çalmaz; sadece tarayıcının çerezleri otomatik gönderme davranışını kötüye kullanır. Bu yazıda saldırının nasıl işlediğini ve modern, katmanlı savunmayı ele alıyoruz.

Saldırı nasıl işler?

Tarayıcılar, bir siteye istek giderken o siteye ait çerezleri otomatik ekler. CSRF bunu sömürür:

  1. Kullanıcı banka.example’da oturum açıktır (oturum çerezi tarayıcıda).
  2. Kullanıcı, saldırganın hazırladığı bir sayfayı ziyaret eder.
  3. O sayfa, arka planda banka.example’a bir istek tetikler — gizli bir form otomatik gönderilir:
<form action="https://banka.example/para-transfer" method="POST">
  <input type="hidden" name="alici" value="saldirgan">
  <input type="hidden" name="tutar" value="10000">
</form>
<script>document.forms[0].submit()</script>
  1. Tarayıcı, banka.example çerezini bu isteğe otomatik ekler → sunucu isteği meşru kullanıcıdan geliyor sanır ve işlemi yapar.

İşlem kullanıcının niyeti olmadan gerçekleşir. CSRF, durum değiştiren işlemlerde (POST/PUT/DELETE) tehlikelidir.

Modern savunma: SameSite çerezleri

Bugün ilk savunma hattı, oturum çerezine SameSite özniteliği koymaktır:

Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
  • SameSite=Lax (çoğu modern tarayıcıda varsayılan): Çerez, farklı bir siteden tetiklenen çoğu istekte (özellikle POST) gönderilmez; yalnız üst-düzey GET gezinmelerinde gider. Bu, yukarıdaki gibi klasik CSRF’lerin büyük kısmını keser.
  • SameSite=Strict: Daha katı; çerez, başka bir siteden gelen hiçbir istekte gönderilmez. Bazı meşru akışları (dış linkten girişte oturum görünmez) bozabilir.

SameSite güçlü bir taban sağlar ama tek başına yeterli sayılmaz; katmanlı savunma önerilir.

CSRF token’ları (senkronizasyon token deseni)

Klasik ve güçlü yöntem: sunucu, her form/oturum için tahmin edilemez bir CSRF token üretir, sayfaya gömer; işlem geldiğinde token’ı doğrular. Saldırganın sayfası bu token’ı bilemez (Same-Origin Policy okumasını engeller), dolayısıyla sahte istek token’sız kalır ve reddedilir.

İlkeler:

  • Token kriptografik olarak rastgele ve oturuma/isteğe bağlı olmalı.
  • Sunucu tarafında doğrulanmalı; yalnız istemcide kontrol yeterli değildir.
  • Durum değiştirmeyen isteklerde (GET) token aranmaz; durum değiştiren metotlarda zorunlu.

Ek kontroller

  • Origin/Referer doğrulaması: Durum değiştiren isteklerde Origin başlığının kendi kaynağınızla eşleştiğini kontrol edebilirsiniz (ek katman).
  • Yeniden kimlik doğrulama: Kritik işlemlerde (parola değişimi) mevcut parolayı yeniden sorun.
  • Durum değiştiren işlemleri GET ile yapmayın. GET yan etkisiz olmalı; aksi halde basit bir <img src> bile işlem tetikleyebilir.

Özet

CSRF, tarayıcının çerezleri otomatik gönderme davranışını sömürür. Modern ve etkili savunma katmanlıdır: oturum çerezine SameSite=Lax/Strict + kritik/durum değiştiren işlemlerde CSRF token. Bu ikili, klasik CSRF senaryolarının neredeyse tamamını kapatır. Ayrıca durum değiştiren işlemleri asla GET ile yapmayın.

Kaynaklar: OWASP CSRF Prevention Cheat Sheet, MDN: SameSite cookies.

Formlarınızın CSRF korumasını ve çerez güvenlik bayraklarını CyberTestify’ın taraması kontrol eder — dış yüzeyinizdeki eksikleri görmek için tarama başlatın.