Ana Sayfa/Teknolojiler/CSRF Saldırısı Nedir? Siteler Arası İstek Sahteciliği ve Korunma Yöntemleri
Teknolojiler

CSRF Saldırısı Nedir? Siteler Arası İstek Sahteciliği ve Korunma Yöntemleri

CSRF (Cross-Site Request Forgery) saldırısı, kullanıcının bilgisi dışında işlem yapılmasına yol açan tehlikeli bir web güvenlik açığıdır. Bu rehberde CSRF'nin nasıl gerçekleştiğini, XSS'den farkını ve etkili korunma yöntemlerini adım adım öğrenebilirsiniz. Özellikle CSRF tokeni, SameSite çerezler ve ek doğrulama mekanizmalarıyla güvenlik seviyenizi artırabilirsiniz.

15 Eyl 2026
8 dk
CSRF Saldırısı Nedir? Siteler Arası İstek Sahteciliği ve Korunma Yöntemleri

CSRF saldırısı (Cross-Site Request Forgery), yetkili bir kullanıcının tarayıcısını, onun bilgisi dışında bir web sitesinde işlem yapmaya zorlayan bir saldırı türüdür. Bu saldırıların gerçekleşmesi için saldırganın kullanıcının şifresini bilmesine, oturumu ele geçirmesine veya hesaba doğrudan erişmesine gerek yoktur; yalnızca tarayıcının kullanıcının zaten giriş yapmış olduğunu kabul etmesi yeterlidir.

CSRF saldırısı nedir ve nasıl mümkün olur?

CSRF kavramının basit açıklaması

CSRF saldırısı, kullanıcının zaten bir siteye giriş yaptığı ve tarayıcının oturum bilgilerini sakladığı bir durumda ortaya çıkar. Örneğin, bir kullanıcı e-ticaret sitesine, şirket paneline ya da başka bir servise giriş yaptıktan sonra oturumu açık bırakır. Oturum aktif olduğu sürece, tarayıcı bu siteye yapılan istekleri otomatik olarak onaylar.

Kullanıcı bu sırada özel olarak hazırlanmış bir sayfa açarsa, zararlı bir bağlantıya tıklarsa veya başka bir siteden gömülü bir içerik yüklerse, tarayıcı kullanıcının giriş yaptığı servise bir istek gönderebilir. Kullanıcı çoğunlukla bu işlemin gerçekleştiğini bile fark etmez.

Tehlike, sunucu yalnızca geçerli oturumun varlığını kontrol ediyor ancak isteğin gerçekten kullanıcı tarafından sitenin arayüzü üzerinden başlatılıp başlatılmadığını doğrulamıyorsa ortaya çıkar.

Basitçe anlatmak gerekirse: Kullanıcı hesabına giriş yapar, aktif bir oturum alır, ardından başka bir web sitesine gider ve bu site hedef servise bir istek başlatır. Tarayıcı bu isteğe oturum bilgilerini ekler ve sunucu isteği hesap sahibi tarafından yapılmış gibi kabul eder.

Cross-Site Request Forgery teriminin anlamı

CSRF'nin tam açılımı Cross-Site Request Forgery'dir, yani "siteler arası istek sahteciliği". Bu terim, saldırının özünü çok iyi açıklar: İstek bir sitede oluşturulur ancak zaten giriş yapmış kullanıcının adına başka bir siteye gönderilir.

Burada saldırı ile CSRF zafiyeti arasındaki farkı bilmek önemlidir. CSRF saldırısı, tarayıcıya istenmeyen bir işlem yaptırma girişimidir. CSRF zafiyeti ise, sunucunun bu isteği ek kontrol olmadan kabul etmesine neden olan web uygulaması mantık hatasıdır.

Tarayıcı burada yanlış çalışmaz; standart davranışını sergiler: Güvenlik ayarlarına göre çerezleri ve diğer verileri ilgili domaine gönderir. Sorun, uygulamanın yalnızca geçerli oturuma dayanarak isteğin gerçekten kullanıcıdan gelip gelmediğini kontrol etmemesidir.

Bu nedenle, CSRF her zaman şifre hırsızlığı veya hesap ele geçirme ile ilişkili değildir. Saldırgan, mağdurun mevcut yetkisini kullanır ve tarayıcıyı, kullanıcının yapabileceği bir işlemi uygunsuz bir anda gerçekleştirmeye zorlar.

CSRF saldırısı nasıl işler: Zararlı bir sayfadan kullanıcı adına istek gönderme

Tarayıcı neden otomatik olarak çerez gönderir?

Kullanıcı giriş yaptıktan sonra, site genellikle bir oturum oluşturur ve bunu çerez ile tarayıcıya bağlar. Aynı domaine yapılan sonraki isteklerde, tarayıcı bu çerezi otomatik olarak ekler; böylece kullanıcı her işlemde tekrar giriş yapmak zorunda kalmaz.

CSRF saldırısı tam olarak bu davranışı kullanır. Yabancı bir sayfa, kullanıcının giriş yaptığı siteye istek göndermeye çalışabilir. Eğer koşullar uygunsa, tarayıcı bu istekle birlikte oturum çerezini de gönderir ve sunucu isteği geçerli bir işlem gibi görebilir.

Buradaki temel sorun, doğru çerezin varlığının oturumu doğrulaması ancak kullanıcının gerçekten bu işlemi yapmak isteyip istemediğini ispatlamamasıdır. Uygulama ek kontrol kullanmazsa, saldırgan bu yetki-doğrulama arasındaki boşluktan faydalanabilir.

CSRF saldırısı örneği

Örneğin, yetkili bir kullanıcının hesap ayarlarını değiştirebildiği bir servisi ele alalım. Eğer sunucu, veri değişikliği isteğini yalnızca aktif oturuma bakarak kabul ediyorsa, üçüncü bir site aynı isteği başlatmaya çalışabilir.

Kullanıcı sadece başka bir siteyi açar ve tarayıcı, hedef servise arka planda istek gönderir. Sunucu, isteği zaten giriş yapmış bir kullanıcı tarafından gönderilmiş gibi algılar.

Burada saldırganın sunucudan cevap alması veya hesabın içeriğini görmesi şart değildir. Klasik CSRF senaryosunda asıl amaç; başkasının verilerini okumak değil, mağdurun yerine sistemin bir işlem yapmasını sağlamaktır.

Hangi işlemler daha riskli?

En kritik olanlar, sistemin durumunu değiştiren isteklere yöneliktir. Bu, iletişim bilgisi değişikliği, güvenlik ayarları, profil parametreleri veya yönetici panelinde yapılan işlemler olabilir.

Bu tür işlemler ek onay gerektirmeden ve istek alınır alınmaz gerçekleşiyorsa risk daha da artar. Kullanıcının yetkileri büyüdükçe olası zarar da artar: Standart bir hesapta CSRF ile yönetici hesabında CSRF'nin sonuçları çok farklıdır.

Bu nedenle önemli işlemler, yalnızca aktif oturumun varlığı ile yetinmemelidir. Sunucu, isteğin gerçekten güvenilir arayüzden ve kullanıcı tarafından başlatıldığını gösteren ek bir işaret beklemelidir.

CSRF tokeni: Gerçek isteği sahte olandan ayırmak

CSRF tokeni nedir?

CSRF tokeni, sunucunun hassas bir istekle birlikte almayı beklediği ek bir değerdir. Genellikle kullanıcıya, oturuma veya belirli bir forma özel olarak üretilir ve sayfaya eklenir.

Kullanıcı formu gönderdiğinde veya ayarları site arayüzü üzerinden değiştirdiğinde, tarayıcı tokeni sunucuya iletir. Sunucu, gelen değeri beklenenle karşılaştırır ve yalnızca doğrulama başarılıysa işlemi gerçekleştirir.

Böylece, yalnızca geçerli bir oturum yeterli değildir. Tarayıcı oturum çerezini otomatik eklese bile, doğru CSRF tokeni olmayan istek reddedilir.

Saldırgan neden doğru tokeni gönderemez?

Başka bir site, farklı bir domainin sayfa içeriğine serbestçe erişemez. Yani istek gönderebilir ama genellikle hedef servisin formundan CSRF tokenini okuyup sahte isteğe ekleyemez.

Burada, çerezlerle token arasındaki temel fark ortaya çıkar. Oturum çerezi çoğunlukla tarayıcı tarafından otomatik gönderilir; ancak CSRF tokeni uygulama tarafından isteğe açıkça dahil edilmelidir.

Eğer token değeri tahmin edilemiyorsa ve sunucu bunu işlemden önce gerçekten kontrol ediyorsa, isteğin sahte olması çok daha zor hale gelir. Yalnızca kullanıcının giriş yapmış olması yeterli değildir.

CSRF'den korunmak için diğer yöntemler

Çerez ayarları da ek koruma sağlar. SameSite özelliği, çerezlerin siteler arası senaryolarda gönderilmesini kısıtlar ve böylece başka bir sayfanın kullanıcının aktif oturumunu kullanma olasılığını azaltır.

Ayrıca sunucu, isteğin kaynağını belirlemek için Origin veya Referer başlıklarını kontrol edebilir. Bu tür kontroller, özellikle yalnızca kendi sayfalarından yapılması gereken işlemler için ek bir güvenlik katmanı sunar.

En hassas işlemler için kimliğin tekrar doğrulanması gerekir: Örneğin, şifrenin tekrar girilmesi, tek kullanımlık kod veya işlemin ayrı bir şekilde onaylanması. Böylece, aktif oturum ve sahte istek bile kritik değişiklikleri otomatik olarak gerçekleştiremez.

CSRF ve XSS: Saldırı türleri arasındaki fark nedir?

CSRF, sitenin tarayıcıya güvenini kötüye kullanır

CSRF saldırısında saldırgan, kullanıcının mevcut oturumunun yetkilerini kullanmaya çalışır. Tarayıcı, istekle birlikte oturum çerezini gönderir ve sunucu, bunu hesap sahibinin işlemi olarak kabul eder.

CSRF'nin en önemli özelliği, zararlı kodun mutlaka hedef sitenin içinde çalışmak zorunda olmamasıdır. Saldırı, kullanıcının başka bir sayfada gezmesiyle başlayabilir ve tarayıcıyı, başka bir servise kullanıcı adına istek göndermeye zorlayabilir.

XSS, kullanıcının siteye olan güvenini kötüye kullanır

XSS (Cross-Site Scripting) ise farklı çalışır. Burada sorun, sitenin kendi sayfasında harici JavaScript kodunun çalışmasına izin vermesiyle başlar.

Bu kod çalışırsa, tarayıcının siteye tanıdığı tüm yetkilere erişir. Zafiyetin türüne bağlı olarak, sayfa içeriğini değiştirebilir, kullanıcının hareketlerini izleyebilir veya onun adına istek gönderebilir.

CSRF'de saldırgan çoğunlukla hedef sitenin içeriğine doğrudan erişemez; amacı, tarayıcıya belirli bir isteği göndertmektir. XSS'de ise zararlı kod doğrudan güvenilen sitede çalışır ve saldırının olanakları çok daha geniştir.

Bir saldırıya karşı koruma, diğerine karşı yeterli değildir

CSRF tokenleri, üçüncü sitelerden gelen sahte istekleri engellemede etkilidir; ancak XSS problemini çözmez. Çünkü saldırgan, zafiyetli uygulamada doğrudan JavaScript çalıştırabiliyorsa, bu kod genellikle site arayüzü ve güvenlik mekanizmalarıyla etkileşime girebilir.

Tersi durumda da geçerlidir. XSS'ten korunmak için veri kaçışlama, girdi filtreleme ve Content Security Policy uygulamak gerekir; ancak bunlar, CSRF tokeni kontrolü ve SameSite çerez ayarı yerine geçmez.

Bu nedenle CSRF ve XSS farklı web zafiyeti sınıflarıdır. Sonuçları benzer olabilir, örneğin kullanıcı adına işlem yapmak, ancak farklı mekanizmalar kullanır ve farklı koruma yolları gerektirir.

CSRF saldırılarından siteyi nasıl koruyabilirsiniz?

Veri değiştiren tüm istekleri kontrol edin

CSRF'den korunma, web uygulamasının doğru mantığı ile başlar. Kullanıcı verisini veya sistem durumunu değiştiren istekler, yalnızca geçerli oturum çerezi olduğu için gerçekleştirilmemelidir.

Özellikle, değişiklik yapan işlemler için GET metodunu kullanmaktan kaçının. GET, yalnızca veri almak için kullanılmalı; ayar değişikliği, bilgi silme, işlem tamamlama gibi önemli işlemler POST, PUT, PATCH veya DELETE gibi metodlarla ve ek istek doğrulaması ile yapılmalıdır.

Ancak doğru HTTP metodunu seçmek yeterli değildir. Sunucu sadece aktif oturuma güvenmeye devam ederse CSRF açığı devam edebilir. Bu yüzden hassas istekler ayrıca kaynak kontrolünden geçmeli veya onaylayıcı bir değer içermelidir.

CSRF tokenleri ve SameSite çerez kullanımı

En temel koruma yöntemlerinden biri CSRF tokenleridir. Sunucu, tahmin edilmesi zor bir değer üretir ve bu değeri istekle birlikte bekler. Yabancı bir sayfa doğru tokeni bilemez; bu sayede aktif oturum olsa bile sahte istek reddedilmiş olur.

SameSite çerez özelliği de ek güvenlik sağlar. Çerezin, siteler arası durumlarda iletilmesini sınırlar ve başka bir site tarafından başlatılan isteğe tarayıcının oturum bilgisini eklemesini zorlaştırır.

CSRF tokenleri ve SameSite politikası, birbirinin yerine geçen değil, tamamlayıcı koruma katmanlarıdır. Token, isteğin meşruluğunu onaylar; SameSite ise çerezlerin otomatik iletimini sınırlar.

CSRF, web zafiyetlerinin yalnızca bir türüdür. Örneğin SQL enjeksiyonu saldırıları, saldırganın artık kullanıcının tarayıcısını değil, uygulamanın veritabanı sorgularını manipüle etmesini hedefler. Bu mekanizma hakkında daha fazla bilgi için ilgili içeriği inceleyebilirsiniz.

Kritik işlemler için ek doğrulama

Çok hassas işlemler için yalnızca CSRF token kontrolü yeterli olmayabilir. Şifre değiştirme, yeni kurtarma yöntemi ekleme, yetki yönetimi gibi kritik işlemler ek kimlik doğrulama gerektirebilir.

Bu, parolanın yeniden girilmesi, tek kullanımlık bir kod veya işlemin ayrı bir şekilde onaylanması şeklinde olabilir. Böylece yanlışlıkla ya da sahte bir istekle hesabın değişmesi riski azaltılmış olur.

Ek olarak sunucu, Origin ve Referer başlıklarını analiz edebilir. Bu başlıklar, isteğin hangi siteden geldiğini gösterir ve beklenmeyen kaynaklardan gelen istekleri reddetmeye yardımcı olur. Ancak bu kontroller genellikle ek bir güvenlik katmanı olarak kullanılmalı, tek başına yeterli görülmemelidir.

Güvenli bir sistem için birden fazla koruma katmanı gerekir: Doğru HTTP metodları, CSRF tokenleri, SameSite çerezler, istek kaynağı kontrolü ve kritik işlemlerde ek doğrulama.

Sonuç

CSRF saldırısı, şifre kırmak yerine, sitenin zaten yetkili olan tarayıcıya güvenini kötüye kullanır. Kullanıcı giriş yapmış ve sunucu, geçerli oturumu her işlem için yeterli görüyorsa, başka bir sayfa kullanıcının adına istek başlatabilir.

Temel koruma, sunucunun isteğin uygulama tarafından oluşturulduğunu doğrulamasını sağlayan CSRF tokeni etrafında şekillenir. Ayrıca SameSite çerezler, Origin ve Referer kontrolü, doğru HTTP metodları ve kritik işlemlerde ek onay mekanizmaları kullanılır.

Geliştiriciler için en önemli kural: Geçerli bir oturum, kullanıcının gerçekten isteği başlatmış olduğu anlamına gelmez. Uygulama veri değiştiriyorsa, sunucu bu işlemin meşruluğunu ayrıca kontrol etmelidir.

Etiketler:

csrf
siber güvenlik
web güvenliği
csrf token
samesite
xss
referer kontrolü
kimlik doğrulama

Benzer Makaleler