Ana icerigi atla

XSS (Cross-Site Scripting) Saldırısı Nedir? Korunma Yolları

Siber Güvenlik1 Nisan 2026

XSS (Cross-Site Scripting), web uygulamalarındaki en yaygın güvenlik açıklarından biridir. Bir saldırgan, web sayfasına zararlı JavaScript kodu enjekte edebiliyorsa, o sayfayı ziyaret eden tüm kullanıcıların tarayıcısında o kodu çalıştırabilir. Sonuç: oturum çerezlerinin çalınması, hesapların ele geçirilmesi, kullanıcıların sahte sitelere yönlendirilmesi. Bu rehberde XSS'in ne olduğunu, türlerini, gerçek örneklerini ve korunma yöntemlerini açıklıyoruz. XSS Nedir? XSS, bir web uygulamasının kullanıcıdan aldığı girdiyi doğrulamadan veya kodlamadan sayfaya yerleştirmesiyle oluşur. Saldırgan bu girdiye JavaScript kodu yerleştirir ve sayfa bu kodu çalıştırır. Basit bir örnek: Bir arama sayfası, kullanıcının arama kelimesini sayfada gösteriyor olsun: html<p>Arama sonucu: elma</p> Eğer uygulama kullanıcı girdisini doğrudan HTML'e yerleştiriyorsa, saldırgan şunu arayabilir: html<script>alert('XSS')</script> Sayfa şu hale gelir: html<p>Arama sonucu: <script>alert('XSS')</script></p> Ve tarayıcı bu script'i çalıştırır. Bu basit örnekte sadece bir uyarı penceresi çıkıyor ama gerçek saldırılarda oturum çerezleri çalınır, keylogger yüklenir, sayfa içeriği değiştirilir. XSS Türleri 1. Reflected XSS (Yansıtılmış XSS) Zararlı kod, URL veya form üzerinden gönderilir ve anında sayfa içeriğinde yansıtılır. Kurbanı hedeflemek için genellikle phishing e-postası veya sosyal medya mesajı üzerinden zararlı link paylaşılır. Saldırı senaryosu: Saldırgan, bir siteye site.com/search?q=<script>zararlı kod</script> şeklinde bir URL oluşturur ve bunu kurbana gönderir. Kurban linke tıkladığında, script kendi tarayıcısında çalışır ve oturum çerezleri saldırgana gönderilir. 2. Stored XSS (Depolanmış XSS) Zararlı kod veritabanına kaydedilir ve sayfayı ziyaret eden her kullanıcıda çalışır. En tehlikeli türdür çünkü tek seferde binlerce kullanıcıyı etkileyebilir. Saldırı senaryosu: Saldırgan, bir forum yorumuna veya profil bilgisine JavaScript kodu yerleştirir. O yorumu veya profili gören her kullanıcının tarayıcısında zararlı kod çalışır. 3. DOM-based XSS Zararlı kod sunucuya hiç gitmeden, tamamen istemci tarafında (JavaScript kodu tarafından) DOM'a yerleştirilir. Bu yüzden sunucu tarafı filtreleme ile tespit edilmesi zordur. Saldırı senaryosu: JavaScript kodu location.hash değerini alıp innerHTML ile sayfaya yerleştirirse, URL'deki # sonrasındaki içerik DOM'a enjekte edilir. XSS ile Neler Yapılabilir? Başarılı bir XSS saldırısı ile saldırgan şunları yapabilir: oturum çerezlerini çalarak hesapları ele geçirebilir. Kullanıcıyı sahte siteye yönlendirebilir (phishing). Sayfa içeriğini değiştirerek yanlış bilgi verebilir (defacement). Kullanıcı adına istek gönderebilir (CSRF benzeri etki). Keylogger yükleyerek tuş vuruşlarını kaydedebilir. Kamera ve mikrofon izni isteyerek casus yazılım kurabilir. Tarayıcı üzerinden iç ağdaki cihazlara saldırabilir. XSS Nasıl Önlenir? 1. Çıktı Kodlama (Output Encoding) En önemli savunma. Kullanıcı girdisini sayfaya yerleştirirken, bağlama (context) göre uygun şekilde kodlayın. HTML bağlamında: <, >, &, ", ' karakterleri HTML entity'lerine çevrilmeli (&lt;, &gt;, &amp;, &quot;, &#x27;). JavaScript bağlamında: String içinde kullanılacak veri, JavaScript escape kurallarına göre kodlanmalı. URL bağlamında: URL parametrelerinde kullanılacak veri, URL encoding (encodeURIComponent) ile kodlanmalı. CSS bağlamında: CSS içinde kullanılacak veri, CSS escape kurallarına göre kodlanmalı. Modern framework'ler (React, Vue, Angular) varsayılan olarak çıktıyı kodlar. Örneğin React'te {userInput} otomatik olarak güvenlidir. Ama dangerouslySetInnerHTML veya Vue'da v-html kullanıldığında bu koruma devre dışı kalır. 2. Content Security Policy (CSP) CSP, tarayıcıya hangi kaynaklardan script, stil, resim yüklenebileceğini söyleyen bir HTTP başlığıdır. Doğru yapılandırılmış bir CSP, inline script çalıştırılmasını engelleyerek XSS saldırılarının büyük çoğunluğunu etkisiz kılar. Örnek CSP başlığı: Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com Bu başlık, sadece kendi domain'den ve trusted-cdn.com'dan script yüklenmesine izin verir, inline script'leri ise engeller. 3. Girdi Doğrulama Kullanıcı girdisini kabul etmeden önce beklenen formatı doğrulayın. Yaş alanında sayı, e-posta alanında e-posta formatı. Beyaz liste yaklaşımı (izin verilenleri tanımlama) her zaman daha güvenlidir. HTML içeriği kabul ettiğiniz durumlarda (zengin metin editörü gibi), DOMPurify veya benzeri kütüphaneler kullanarak zararlı kodu temizleyin. 4. HttpOnly ve Secure Cookie Flag'leri Oturum çerezlerinize HttpOnly flag'ini ekleyin — bu, çerezlerin JavaScript tarafından okunmasını engeller. Böylece bir XSS saldırısı olsa bile, saldırgan oturum çerezini çalamaz. Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Strict Secure flag'i çerezin sadece HTTPS üzerinden gönderilmesini, SameSite flag'i ise cross-site isteklerde gönderilmemesini sağlar. 5. Framework Güvenlik Özelliklerini Kullanma React, Vue, Angular gibi modern framework'ler XSS'e karşı yerleşik koruma sağlar. Ama bu korumayı bilerek devre dışı bırakmamak gerekir. dangerouslySetInnerHTML, v-html, bypassSecurityTrustHtml gibi fonksiyonları sadece gerçekten gerekli olduğunda ve güvenilir kaynaklardan gelen veri için kullanın. 6. Düzenli Güvenlik Testi XSS açıklarını otomatik araçlarla (OWASP ZAP, Burp Suite) düzenli tarayın. Manuel sızma testleri ile otomatik araçların yakalayamadığı karmaşık XSS senaryolarını test edin. Sonuç XSS, çözümü 20 yıldır bilinen ama hâlâ yaygın olan bir açık. Modern framework'ler ve doğru güvenlik pratikleriyle neredeyse tamamen önlenebilir. Anahtar prensipler: çıktıyı her zaman kodla, CSP kullan, HttpOnly çerez kullan, framework güvenlik özelliklerini devre dışı bırakma. Diyarbakır'da web uygulamalarınızın XSS testi dahil kapsamlı güvenlik denetimi için VefaSoft ile iletişime geçebilirsiniz.

İlgili Yazılar:

Web Uygulama Güvenlik Testi: OWASP Top 10 Açıklaması SQL Injection Nedir? Nasıl Önlenir? Sızma Testi (Penetrasyon Testi) Nedir? Kapsamlı Rehber Siber Saldırı Türleri: Phishing'den Ransomware'e Tam Liste