Blog

Web Uygulamalarında XSS ve CSRF Saldırılarına Karşı Korunma

Modern web uygulamaları her geçen gün daha karmaşık hale geliyor ve bununla birlikte güvenlik açıklarının önemi de artıyor. XSS (Cross-Site Scripting) ve CSRF (Cross-Site Request Forgery) saldırıları, web güvenliğinde en sık karşılaşılan ve en tehlikeli tehditler arasında yer alıyor. Bu makalede, bu saldırı türlerini ve korunma yöntemlerini detaylıca ele alıyoruz.

XSS (Cross-Site Scripting) Saldırıları

XSS saldırıları, saldırganların bir web sitesine zararlı script kodları enjekte etmesine dayanır. Bu kodlar, siteyi ziyaret eden masum kullanıcıların tarayıcılarında çalışır ve kimlik bilgileri çalmak, oturumları ele geçirmek veya zararlı işlemler yapmak için kullanılabilir.

XSS Türleri

  • Stored XSS: Zararlı kod veritabanına kaydedilir ve her ziyaretçiye sunulur.
  • Reflected XSS: Zararlı kod, bir URL parametresi üzerinden gönderilir ve sunucu yanıtında doğrudan yansıtılır.
  • DOM-Based XSS: Zararlı kod, istemci tarafında JavaScript ile işlenirken tarayıcıda tetiklenir.

XSS'e Karşı Korunma Yöntemleri

  • Output Encoding Kullanın: HTML, JavaScript, URL gibi farklı kontekstlerde verileri encode edin.
    echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
  • Content Security Policy (CSP) Uygulayın: Tarayıcının sadece belirlenen kaynaklardan kod çalıştırmasını sağlayın.
    Content-Security-Policy: default-src 'self'; script-src 'self';
  • Input Validation Yapın: Kullanıcıdan alınan verileri kabul edilebilir formatlarla sınırlayın.

CSRF (Cross-Site Request Forgery) Saldırıları

CSRF saldırıları, bir kullanıcının tarayıcısını kullanarak, kullanıcının bilgisi dışında bir web uygulamasına zararlı istekler gönderilmesini sağlar. Örneğin, bir bankacılık sitesinde oturum açmış bir kullanıcıdan habersiz olarak para transferi yapılabilir.

CSRF'ye Karşı Korunma Yöntemleri

  • CSRF Token Kullanımı: Her form veya önemli işlem için sunucuda üretilmiş benzersiz bir token gönderin ve doğrulayın.
    <input type="hidden" name="csrf_token" value="gX9w1d2e3f...">
  • SameSite Cookie Özelliği: Çerezlerin yalnızca aynı site kaynaklı isteklerde gönderilmesini sağlayın.
    Set-Cookie: sessionId=abc123; SameSite=Strict
  • Kritik İşlemler İçin Ek Kimlik Doğrulama: Para transferi, şifre değişikliği gibi işlemlerde ek şifre veya SMS doğrulaması isteyin.

Saldırılar, Etkileri ve Korunma Yöntemleri

Saldırı Türü Etkisi Korunma Yöntemi
XSS Kimlik bilgisi çalınması, oturum ele geçirme Output encoding, CSP, input validation
CSRF Yetkisiz işlem gerçekleştirme (örneğin para transferi) CSRF token, SameSite cookie, ek doğrulama

Gerçek Hayattan Bir Örnek

Twitter (2010) XSS Açığı: 2010 yılında Twitter'da bulunan bir Reflected XSS açığı, kullanıcıların farkında olmadan zararlı bağlantılara tıklamasına neden oldu. Saldırganlar JavaScript kodu enjekte ederek milyonlarca kullanıcıya kötü amaçlı bağlantılar gönderebildi. Bu olay, büyük ölçekli platformlarda bile XSS açığının ne kadar tehlikeli olabileceğini gösterdi.

XSS ve CSRF saldırıları, web uygulamalarında kullanıcı güvenliğini tehdit eden en önemli riskler arasında yer almaktadır. Bu tür saldırılara karşı etkili koruma sağlamak için doğru teknikleri kullanmak, güvenlik testlerini düzenli yapmak ve ekipleri sürekli bilinçlendirmek gerekir. Unutmayın: Web güvenliği, yalnızca kod kalitesi değil, aynı zamanda proaktif önlemlerle inşa edilen bir savunmadır.