XSS (Cross-Site Scripting) Nedir?

XSS (Cross-Site Scripting) Nedir?

XSS (Cross-Site Scripting) Nedir?

Cross-Site Scripting (XSS), saldırganların bir web uygulamasına zararlı JavaScript kodları enjekte ederek diğer kullanıcıların tarayıcısında bu kodları çalıştırmasına neden olan bir güvenlik açığıdır. Bu saldırılar genellikle kullanıcı girdisinin doğru filtrelenmemesi sonucu oluşur.

Nasıl Çalışır?

Uygulama, kullanıcıdan aldığı veriyi HTML içeriğine doğrudan eklediğinde saldırgan, aşağıdaki gibi zararlı bir kod enjekte edebilir:

<script>alert('XSS saldırısı!')</script>
    

Bu kod, sayfa yüklendiğinde kullanıcının tarayıcısında çalışır.

XSS Türleri

  • Stored XSS: Zararlı kod veritabanına kaydedilir, her kullanıcıya sunulur.
  • Reflected XSS: Zararlı kod URL ile taşınır, sunucudan yansıyarak tarayıcıda çalışır.
  • DOM-Based XSS: Saldırı doğrudan tarayıcıdaki JavaScript ile olur, sunucuya ulaşmaz.

Olası Tehlikeler

  • Oturum çalma (session hijacking)
  • Phishing saldırıları
  • Kullanıcı bilgilerini çalma
  • Sayfa içeriğini değiştirme
  • Tarayıcıda kötü niyetli komutlar çalıştırma

Korunma Yöntemleri

  • Output Encoding: HTML, JavaScript ve URL içeriğinde özel karakterleri kodlayın.
  • Input Validation: Kullanıcıdan gelen verileri beyaz liste ile doğrulayın.
  • Content Security Policy (CSP): Sayfa içi script çalışmasını engelleyin veya sınırlandırın.
  • HTTPOnly Cookie: JavaScript'in cookie'ye erişmesini engeller.
  • Framework Güvenliği: React, Angular gibi framework’ler otomatik escaping yapar.

Test Etme Yöntemleri

  • <script>alert(1)</script> gibi basit payloadlarla manuel test
  • XSS Hunter gibi araçlarla payload takibi
  • Burp Suite ile güvenlik testleri
Not: XSS, her web geliştiricisinin mutlaka anlaması gereken bir konudur. Kullanıcı girdisine karşı güvenlik önlemleri alınmadığında çok ciddi ihlaller yaşanabilir.

Sonuç

XSS saldırıları, web uygulamalarında en sık karşılaşılan açıklardan biridir. Güvenli kodlama alışkanlıkları ve tarayıcı tabanlı savunmalarla bu tür saldırıların büyük bir kısmı önlenebilir. Geliştirici olarak her çıktının nereye gittiğini ve nasıl işlendiğini bilmek kritik öneme sahiptir.

Scroll to Top