Web uygulamalarında kullanıcı oturumları genellikle çerezler aracılığıyla yönetilir. Kullanıcı bir web sitesinde oturum açtığında tarayıcı, sonraki isteklerde ilgili oturum çerezini otomatik olarak sunucuya gönderir. Bu çalışma biçimi kullanım kolaylığı sağlarken gerekli güvenlik önlemleri alınmadığında CSRF saldırılarına zemin hazırlayabilir. Bu rehberde CSRF saldırısı nedir, hangi işlemleri hedef alır ve CSRF token nasıl çalışır sorularını ele alıyoruz.

CSRF Saldırısı Nedir?
CSRF, Cross-Site Request Forgery ifadesinin kısaltmasıdır. Türkçede Siteler Arası İstek Sahteciliği olarak adlandırılır. Bu saldırıda oturumu açık olan bir kullanıcının tarayıcısı, bilgisi dışında hedef web uygulamasına istek göndermek için kullanılır.
Saldırgan doğrudan kullanıcının parolasını veya oturum çerezini ele geçirmek zorunda değildir. Kullanıcının hedef uygulamada daha önce kimlik doğrulaması yapmış olması yeterli olabilir. Tarayıcı geçerli oturum çerezini isteğe otomatik olarak eklediği için sunucu, gönderilen talebin kullanıcı tarafından başlatıldığını düşünebilir.
CSRF saldırısı, uygulamanın isteğin kaynağını ve kullanıcı niyetini doğrulamadığı durumlarda başarılı olabilir. Bu nedenle yalnızca oturum kontrolü yapmak kritik işlemlerin güvenliği için yeterli değildir.

CSRF Saldırısı Nasıl Gerçekleşir?
Kullanıcı domainadresiniz.com üzerinde oturum açtıktan sonra başka bir web sayfasını ziyaret edebilir. Bu sayfada saldırgan tarafından hazırlanmış gizli bir form, bağlantı veya otomatik çalışan istek bulunabilir.
Kötü amaçlı içerik, tarayıcı üzerinden domainadresiniz.com adresindeki hassas bir işlem noktasına istek gönderir. Kullanıcının oturumu hâlâ açıksa tarayıcı ilgili çerezi isteğe ekleyebilir. Hedef uygulama ek bir doğrulama yapmıyorsa işlem geçerli bir kullanıcı talebi gibi işlenebilir.
Saldırının gerçekleşebilmesi için saldırganın hedef işlem adresini ve gerekli parametreleri bilmesi gerekir. Kullanıcının aktif oturuma sahip olması ve uygulamanın CSRF koruması kullanmaması da saldırının başarı ihtimalini artırır.

CSRF Saldırıları Hangi İşlemleri Hedef Alabilir?
CSRF saldırıları çoğunlukla kullanıcı hesabında değişiklik oluşturan işlemleri hedefler. Sadece veri görüntüleyen sayfalar yerine sunucu üzerinde kalıcı sonuç oluşturan istekler saldırganlar açısından daha değerlidir.
Hedef alınabilecek işlemler arasında şunlar bulunabilir:
- Hesap e-posta adresinin değiştirilmesi
- Kullanıcı parolasının güncellenmesi
- Yeni yönetici hesabı oluşturulması
- Kayıtlı adres bilgilerinin değiştirilmesi
- Sipariş veya ödeme talebi başlatılması
- Kullanıcı hesabının silinmesi
- Uygulama ayarlarının güncellenmesi
Hassas işlemler mümkün olduğunca GET isteğiyle gerçekleştirilmemelidir. Veri değişikliği oluşturan işlemlerde POST, PUT, PATCH veya DELETE gibi uygun HTTP yöntemleri kullanılmalı ve ayrıca istek doğrulaması yapılmalıdır.

CSRF Token Nedir?
CSRF token, sunucu tarafından oluşturulan ve kullanıcının gönderdiği isteğin güvenilir bir sayfadan başlatıldığını doğrulamaya yardımcı olan özel bir değerdir. Genellikle tahmin edilmesi zor ve yeterli uzunluğa sahip bir karakter dizisinden oluşur.
Kullanıcı bir form sayfasını açtığında sunucu ilgili oturum için token üretir. Bu değer form içerisine gizli bir alan olarak eklenebilir. Form gönderildiğinde token da diğer bilgilerle birlikte sunucuya iletilir.
Sunucu, gelen token değerini oturumla ilişkilendirilen kayıtla karşılaştırır. Değerler eşleşiyorsa işlem devam eder. Token eksik, geçersiz veya başka bir oturuma aitse talep reddedilir.

CSRF Token Nasıl Çalışır?
CSRF token mekanizması, saldırganın yalnızca işlem adresini ve form parametrelerini bilmesini yetersiz hâle getirir. Geçerli isteğin oluşturulabilmesi için sunucunun ürettiği özel token değerine de ihtiyaç duyulur.
Basit bir form içerisinde token şu şekilde bulunabilir:
<form method="POST" action="/hesap/e-posta-degistir">
<input type="hidden" name="csrf_token" value="sunucu-tarafindan-olusturulan-deger">
<input type="email" name="email">
<button type="submit">Güncelle</button>
</form>
Form gönderildiğinde sunucu önce kullanıcının oturumunu kontrol eder. Ardından csrf_token alanındaki değerin geçerliliğini doğrular. İki kontrol de başarılı olduğunda e-posta değiştirme işlemi gerçekleştirilebilir.
Saldırgan başka bir sayfadan benzer form hazırlasa bile geçerli token değerine erişemediği için sunucu isteği kabul etmez.

Güvenli Bir CSRF Token Nasıl Oluşturulmalıdır?
CSRF token değerleri güvenli bir rastgele sayı üreticisi kullanılarak hazırlanmalıdır. Kısa, sıralı veya kolay tahmin edilebilen değerler saldırgan tarafından üretilebilir. Token içerisinde kullanıcı adı, tarih veya hesap numarası gibi bilinen verilerin doğrudan kullanılması uygun değildir.
Token kullanıcı oturumuyla ilişkilendirilmeli ve başka bir hesapta geçerli olmamalıdır. Oturum sona erdiğinde mevcut token değerinin de geçersiz hâle gelmesi güvenliği artırır. Kritik işlemlerde token kullanım süresi ayrıca sınırlandırılabilir.
Token değerleri URL içerisine eklenmemelidir. URL’ler tarayıcı geçmişinde, sunucu günlüklerinde veya yönlendirme bilgilerinde kaydedilebilir. Bunun yerine form gövdesi ya da uygun bir özel HTTP başlığı kullanılmalıdır.

SameSite Çerez Özelliği CSRF Saldırılarını Engeller mi?
SameSite çerez özelliği, çerezlerin farklı bir web sitesinden başlatılan isteklerde gönderilip gönderilmeyeceğini sınırlandırır. Lax veya Strict seçenekleri birçok CSRF saldırısının gerçekleşmesini zorlaştırabilir.
Ancak uygulamanın güvenliği yalnızca SameSite ayarına bağlanmamalıdır. Tarayıcı uyumluluğu, alt alan adları, yönlendirme yapıları ve uygulamanın çalışma gereksinimleri korumanın kapsamını etkileyebilir.
Hassas işlemlerde CSRF token, güvenli çerez ayarları ve istek kaynağı kontrolleri birlikte kullanılmalıdır. Secure özelliği çerezin yalnızca HTTPS bağlantılarında iletilmesini sağlarken HttpOnly, istemci tarafındaki kodların oturum çerezine erişmesini sınırlandırır.

CSRF Korumasında Yapılan Hatalar Nelerdir?
Token oluşturmak tek başına yeterli değildir. Sunucu tarafında token doğrulamasının yapılmaması, korumayı etkisiz hâle getirir. Bazı uygulamalarda yalnızca belirli formlar korunurken diğer veri değiştiren işlem noktaları açık bırakılabilir.
CSRF token değerinin sabit tutulması, farklı kullanıcılar arasında paylaşılması veya kolay tahmin edilebilir biçimde üretilmesi de güvenlik riski oluşturur. Ayrıca yalnızca JavaScript tarafında yapılan kontroller sunucu doğrulamasının yerini tutmaz.
Uygulamadaki XSS açıklarının CSRF korumasını zayıflatabileceği unutulmamalıdır. Zararlı kod güvenilir sayfa içerisinde çalıştırılabiliyorsa token değerini okuyabilir veya kullanıcı adına işlem başlatabilir. Bu nedenle XSS ve CSRF önlemleri birlikte değerlendirilmelidir.
Sonuç
CSRF saldırısı, kullanıcının aktif oturumundan yararlanarak bilgisi dışında işlem gerçekleştirilmesini amaçlar. CSRF token kullanımı, isteğin güvenilir uygulama sayfasından gönderildiğini doğrulamaya yardımcı olur. Güvenli token üretimi, sunucu taraflı doğrulama, uygun HTTP yöntemleri ve korumalı çerez ayarları birlikte uygulanmalıdır.

Domainhizmetleri olarak hızlı, güvenli ve stabil hosting altyapımızla web projelerinize uygun çözümler sunuyoruz. Güvenlik katmanlarıyla desteklenen hosting hizmetlerimizden yararlanarak web sitenizin daha güvenli bir ortamda yayınlanmasını sağlayabilirsiniz.




