CSRF Nedir?
CSRF, kötü niyetli bir kullanıcının, sizin kimlik bilgilerinizi kullanarak, güvenli bir web sitesine sahte istekler göndermesini sağlar. Basitçe söylemek gerekirse, saldırgan, sizin bilginiz olmadan ve sizin tarayıcınızda oturum açmışken, bir web sitesine işlem yapmanızı sağlar. Bu saldırının en tehlikeli yönü, kullanıcının yetkilendirilmiş olduğu bir işlem yapılmasını sağlamasıdır.
CSRF Nasıl Çalışır?
1. Sahte İstek Gönderimi: Saldırgan, sizin bankanızda oturum açtığınızı bilmektedir. Ancak, bankaya ait hiçbir şüpheli siteye erişimi yoktur. O zaman ne yapar? Sizi, bankanın web sitesindeki bir işlemi (mesela para transferi) gerçekleştirecek şekilde kandıran bir web sayfası tasarlar.
2. Kullanıcıdan Bilgi Almak: Siz, hiç şüphe duymadan saldırganın hazırladığı zararlı sayfaya tıklarsınız. Burada fark etmediğiniz şey, bu sayfa aslında bankanızın web sitesine, sizin adına, bir para transferi işlemi gönderiyor.
3. İşlem Başarıyla Gerçekleşiyor: Sizin banka hesabınızda herhangi bir değişiklik olmadan, saldırgan istediği işlem gerçekleşmiş olur.
Görünüşte basit bir işlem gibi ama oldukça tehlikeli. Özellikle oturum açmış kullanıcılar için büyük risk oluşturur çünkü kullanıcıyı, yetkili olduğu bir işlemde yanıltmak oldukça kolaydır.
CSRF'den Nasıl Korunulur?
# 1. Token Kullanımı
En yaygın savunma mekanizmalarından biri CSRF token kullanmaktır. Bir web uygulaması, her form gönderimi için rastgele oluşturulmuş bir token ekler. Bu token, sunucu tarafından doğrulanır ve her istekten önce bu token’in doğru olup olmadığı kontrol edilir. Eğer token geçersizse, işlem reddedilir.
# 2. SameSite Çerez Politikası
Web uygulamaları, kullanıcı çerezlerini kullanarak oturum yönetimini sağlar. Ancak, CSRF saldırılarından korunmanın bir diğer yolu, SameSite çerez politikasını etkinleştirmektir. Bu, yalnızca aynı sitelerden gelen talepleri kabul eder ve dışarıdan gelen istekleri engeller.
Set-Cookie: sessionid=abcd1234; SameSite=Strict; Secure
# 3. Referer ve Origin Başlıklarını Kontrol Etme
Sunucular, gelen isteğin kaynağını doğrulamak için Referer veya Origin başlıklarını kontrol edebilir. Eğer bu başlıklar, beklenmedik bir kaynaktan geliyorsa, istek reddedilebilir.
Özellikle önemli işlemler için, çift onaylı işlemler (double-confirmation) eklemek etkili olabilir. Kullanıcının gerçekleştirmek istediği işlemi, bir onay penceresi veya SMS doğrulaması ile onaylatmak, CSRF saldırılarının etkisini azaltır.
Sonuç
Unutmayın, bir web geliştiricisi olarak en önemli görevimiz, kullanıcılarımızın güvenliğini sağlamaktır. CSRF gibi saldırılara karşı korunmak, sadece daha güvenli bir site yapmakla kalmaz, aynı zamanda kullanıcılarımızın güvenini kazanmak demektir.