CSRF Nedir?
CSRF, bir saldırganın kurbanın tarayıcısını kullanarak, güvenli bir web uygulamasına istenmeyen istekler göndermesi durumudur. Birçok kişi, CSRF'nin sadece kullanıcıların şifrelerini çalmakla sınırlı olduğunu düşünebilir. Ancak, aslında bu saldırı türü, kullanıcının bilmeden ve farkında olmadan çeşitli zararlı işlemler gerçekleştirmesine neden olabilir. Bunu, kötü niyetli bir sitenin başka bir web sitesinde oturum açmış bir kullanıcıyı manipüle etmesi şeklinde düşünebilirsiniz.
CSRF Saldırısının Çalışma Prensibi
Peki, CSRF saldırısı nasıl işler? Bir saldırgan, kurbanın tarayıcısında aktif bir oturum varken, başka bir site üzerinden zararlı bir istek gönderebilir. Örneğin:
2. Saldırgan, başka bir web sayfasına kurbanı yönlendirir veya ona tıklaması için bir link gönderir.
3. Tarayıcı, kurbanın kimlik doğrulama bilgileriyle (örneğin çerezler) istek gönderir. Web uygulaması, isteği geçerli bir işlem olarak kabul eder ve bunu işler.
Örneğin, bir bankacılık uygulamasına giriş yapmışsanız, saldırgan bir şekilde sizin adınıza başka bir hesaba para transferi yapabilir. O anda sizin şifrenizi bilmesine gerek yok, sadece sizin tarayıcınızda oturum açmış olmanız yeterlidir.
CSRF'ye Karşı Nasıl Korunursunuz?
CSRF saldırılarına karşı korunmak, çoğu zaman uygulama geliştiricilerin yapacağı basit ama etkili önlemlerle mümkündür. İşte en yaygın kullanılan yöntemler:
Web uygulamanızda her form gönderiminde, sunucudan bir token (özel anahtar) alırsınız. Bu token, her istekte sunucuya gönderilir ve sunucu bu token'ı doğrulayarak isteğin geçerli olup olmadığını kontrol eder. Token, her oturumda benzersizdir, bu yüzden saldırganın kurbanın token'ını tahmin etmesi neredeyse imkansızdır.
Örnek bir CSRF token kullanım kodu şu şekilde olabilir:
# 2. SameSite Çerez Özelliği
Tarayıcılar, çerezleri yalnızca aynı site içindeki isteklere gönderir. Bu, CSRF saldırılarının önlenmesinde büyük bir adımdır. Çoğu modern tarayıcıda, çerezler için SameSite özelliği aktif hale getirilmiştir. Bu, bir sitenin, kullanıcıyı başka bir siteye yönlendirdiğinde, çerezlerin gönderilmesini engeller.
Set-Cookie: sessionid=abc123; SameSite=Strict;
# 3. Referer ve Origin Başlıklarının Kontrolü
İsteklerin Referer ve Origin başlıkları, isteğin geldiği kaynağı belirten başlıklardır. Web uygulamanız, bu başlıkları kontrol ederek, isteğin güvenilir bir kaynaktan gelip gelmediğini kontrol edebilir. Eğer başlık, beklenen kaynağa ait değilse, istek reddedilebilir.
if (request.headers['Referer'] != 'https://www.sizinwebsiteniz.com') {
return res.status(403).send('Erişim Engellendi');
}
CSRF'ye Karşı Alınacak Diğer Tedbirler
Bunlar dışında, uygulamanızda güvenliği artıracak bazı önlemler alabilirsiniz:
- X-Frame-Options başlığını kullanarak, sitenizin başka bir siteye iframe olarak yüklenmesini engellemek.
- Kullanıcı oturumlarının kısa süreli olması ve aktif oturum zaman aşımı eklemek.
### Sonuç
CSRF saldırıları, kullanıcıların ve web uygulamalarının güvenliğini tehdit edebilir, ancak doğru önlemler alındığında oldukça etkili bir şekilde engellenebilir. Web geliştiricilerinin, bu tür saldırılara karşı dikkatli olması ve uygun güvenlik önlemlerini alması oldukça önemlidir. Unutmayın, web uygulamanızda kullanıcı güvenliğini sağlamak, sadece kullanıcıları korumakla kalmaz, aynı zamanda uygulamanızın güvenilirliğini de artırır.