CSRF (Siteler Arası İstek Sahteciliği) Nedir ve Nasıl Önlenir?
13 Eylül 2026
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:
- Kullanıcı
banka.example’da oturum açıktır (oturum çerezi tarayıcıda). - Kullanıcı, saldırganın hazırladığı bir sayfayı ziyaret eder.
- 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>
- 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
Originbaş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.