Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog XSS (Cross‑Site Scripting) Güvenliği: 2026’da Web Uygulamalarınızı Nasıl Korursunuz?

XSS (Cross‑Site Scripting) Güvenliği: 2026’da Web Uygulamalarınızı Nasıl Korursunuz?

XSS (Cross‑Site Scripting) Güvenliği: 2026’da Web Uygulamalarınızı Nasıl Korursunuz?

XSS Nedir? Temel Kavramlar ve Çalışma Prensibi

XSS Nedir? Temel Kavramlar ve Çalışma Prensibi - XSS (Cross-Site Scripting) Güvenliği
XSS Nedir? Temel Kavramlar ve Çalışma Prensibi

Cross‑Site Scripting (XSS), saldırganların hedef web sitesine zararlı <script> kodları enjekte etmesiyle gerçekleşen bir güvenlik açığıdır. Kullanıcı, normal bir sayfa talep ettiğinde, sunucu saldırgan tarafından eklenmiş kötü amaçlı JavaScript’i döndürür ve bu kod tarayıcıda çalışır. Sonuçta oturum çerezleri çalınabilir, sahte formlar gösterilebilir ya da kullanıcıyı istenmeyen sitelere yönlendirebilir.

XSS üç ana tipe ayrılır: Reflected (Yansıtılmış), Stored (Depolanmış) ve DOM‑Based (DOM tabanlı). Reflected XSS, genellikle arama kutuları gibi kullanıcı girdisinin anında yanıt içinde geri döndüğü durumlarda görülür. Stored XSS ise veritabanı, forum mesajı gibi kalıcı bir depolama alanına enjekte edilen kodla gerçekleşir. DOM‑Based XSS ise istemci tarafı JavaScript’in DOM’u manipüle ederken hatalı girdiyi doğrudan sayfaya eklemesiyle ortaya çıkar.

Yaygın XSS Hataları ve İşletmelere Maliyeti

Birçok web geliştiricisi, girdileri yeterince temizlemediği için XSS’e açık kapı bırakır. Özellikle aşağıdaki hatalar %40 daha yüksek risk oluşturur:

  • HTML etiketlerini kaçış (escape) yapmadan doğrudan çıktılamak.
  • JavaScript içinde innerHTML gibi tehlikeli metodları kullanmak.
  • Üçüncü parti kütüphanelerin güncel olmaması ve güvenlik yamalarının atlanması.

Bu hataların maliyeti sadece itibar kaybı değil, aynı zamanda GDPR ve KVKK gibi veri koruma yasalarına uyumsuzluk nedeniyle oluşabilecek para cezalarıdır. Örneğin, bir e‑ticaret sitesinde XSS saldırısı sonucu kredi kartı bilgilerinin çalınması, ortalama 150.000 USD'lik bir zarara yol açabilir.

XSS Önleme Stratejileri: Katmanlı Güvenlik Yaklaşımı

XSS’i önlemek tek bir adımla mümkün değildir; birden fazla katmanda savunma oluşturmak gerekir. En etkili yöntemler şunlardır:

  1. Girdi Doğrulama (Input Validation): Kullanıcıdan gelen tüm verileri beyaz‑liste (whitelist) yaklaşımıyla kontrol edin. Örneğin, sadece alfanümerik karakterlere izin verin.
  2. Çıktı Kaçışı (Output Escaping): HTML, JavaScript, CSS ve URL bağlamları için uygun kaçış fonksiyonlarını kullanın. PHP’de htmlspecialchars(), Node.js’de escape-html paketleri işinizi görecektir.
  3. İçerik Güvenlik Politikası (Content Security Policy – CSP): script-src 'self' gibi direktiflerle yalnızca güvenilir kaynaklardan script çalıştırılmasını zorunlu kılın.
  4. HTTP‑Only ve Secure Çerezler: Çerezleri HttpOnly ve Secure bayraklarıyla işaretleyerek JavaScript’in erişimini engelleyin.
  5. WAF (Web Application Firewall) Kullanımı: WAF güvenlik duvarı sayesinde bilinen XSS imzalarını otomatik olarak engelleyebilirsiniz.

Bu katmanları bir arada uyguladığınızda, saldırganların tek bir zafiyeti istismar etme şansı %90’ın üzerinde azalır.

Adım Adım XSS Koruma: Uygulamalı Örnek

Adım Adım XSS Koruma: Uygulamalı Örnek - XSS (Cross-Site Scripting) Güvenliği
Adım Adım XSS Koruma: Uygulamalı Örnek

Aşağıda PHP tabanlı bir blog uygulamasında XSS korumasını nasıl ekleyeceğinizi adım adım gösteriyoruz. Bu örnek, aynı zamanda VDS sunucu paketleri üzerinde kolayca test edilebilir.

  1. Girdi Filtreleme: Kullanıcı yorumlarını alırken sadece izin verilen karakterleri kabul edin.
    $comment = preg_replace("/[^a-zA-Z0-9 .,!?]/", "", $_POST['comment']);
    
  2. Çıktı Kaçışı: Veritabanından çekilen yorumu ekrana basarken kaçış yapın.
    echo htmlspecialchars($comment, ENT_QUOTES, 'UTF-8');
    
  3. CSP Header Ekleme: Apache veya Nginx konfigürasyon dosyasına aşağıdaki satırı ekleyin.
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com;"
    
  4. Çerez Güvenliği: Oturum çerezlerini şu şekilde ayarlayın.
    session_set_cookie_params([
        'httponly' => true,
        'secure'   => true,
        'samesite' => 'Strict'
    ]);
    
  5. WAF Entegrasyonu: WAF güvenlik duvarı kurulumundan sonra “XSS Protection” kuralını aktif edin.

Bu adımları tamamladığınızda, blogunuzda XSS riski büyük ölçüde azalır ve kullanıcı verileri daha güvenli bir ortamda saklanır.

Stored XSS ve DOM‑Based XSS Karşılaştırma Tablosu

ÖzellikStored XSSDOM‑Based XSS
Enjekte Edilen YerSunucu tarafı (veritabanı, dosya)İstemci tarafı (JavaScript)
Algılama ZorluğuOrta – Sunucu logları üzerinden tespitYüksek – Tarayıcı konsolunda görülür
Koruma YöntemiGirdi doğrulama + çıktı kaçışıDOM sanitizasyonu, CSP
Örnek SenaryoKullanıcı profiline script eklemeURL parametresinden gelen kodun innerHTML’e eklenmesi

Gerçek Dünya Senaryosu: E‑ticaret Sitesinde XSS Sızıntısı

Bir e‑ticaret platformu, ürün yorum bölümünde kullanıcıların HTML etiketlerini kullanmasına izin vermişti. Saldırgan, <script>alert('XSS')</script> şeklinde bir yorum gönderdi. Bu yorum tüm ziyaretçilere gösterildi ve oturum çerezleri çalındı. Şirket, e‑ticaret hosting planını yeniden gözden geçirerek WAF ve CSP ekledi, ardından yorum sistemini sadece metin kabul edecek şekilde güncelledi. Sonuç: saldırı %0’a indi ve müşteri memnuniyeti %15 artış gösterdi.

Bu örnek, sadece teknik önlemler değil, aynı zamanda güvenlik odaklı bir hosting seçimi (örneğin WordPress hosting) ve düzenli güvenlik denetimlerinin önemini vurgular.

Gelişmiş Koruma: CSP ve Sub‑Resource Integrity (SRI) Kullanımı

Content Security Policy (CSP), tarayıcının sadece belirttiğiniz kaynaklardan script çalıştırmasını zorunlu kılar. Örneğin aşağıdaki header, yalnızca kendi domaininizden ve güvenilir bir CDN’den script alınmasını sağlar:

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; object-src 'none';

Sub‑Resource Integrity (SRI) ise harici script dosyalarının hash değerini belirterek dosyanın değiştirilmediğini doğrular. HTML’de şu şekilde eklenir:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"
        integrity="sha384-abcdef1234567890..."
        crossorigin="anonymous"></script>

Bu iki teknoloji bir arada kullanıldığında, saldırganların harici bir kütüphaneyi manipüle etmesi neredeyse imkânsız hâle gelir. Ayrıca fiziksel sunucu (dedicated server) ortamında CSP loglarını izlemek, olası ihlalleri erken tespit etmeyi sağlar.

Sıkça Sorulan Sorular

1. XSS ile SQL Injection arasındaki fark nedir?

XSS, istemci tarafında (tarayıcı) çalışan bir saldırıdır ve genellikle oturum çerezlerini hedef alır. SQL Injection ise sunucu tarafında, veritabanı sorgularını manipüle ederek veri sızdırma veya değiştirme amacı taşır.

2. CSP tamamen XSS’i engeller mi?

CSP, XSS riskini büyük ölçüde azaltır ancak tüm senaryoları kapsamaz. Özellikle DOM‑Based XSS, doğru yapılandırılmamış CSP kurallarıyla hala gerçekleşebilir. Bu yüzden CSP’yi diğer önlemlerle birlikte kullanmak gerekir.

3. WAF kurulumundan sonra XSS tespit edilemiyorsa ne yapmalıyım?

WAF’ın imza tabanlı kurallarının güncel olduğundan emin olun. Ayrıca uygulama katmanında output escaping ve CSP gibi ek korumalar ekleyerek savunma derinliğini artırın.

4. XSS raporlarını nasıl izleyebilirim?

Sunucu logları, CSP raporları (report-uri direktifi) ve WAF dashboard’ları XSS denemelerini izlemek için kullanılabilir. Bu araçları merkezi bir SIEM sistemine entegre etmek, anormallikleri hızlıca tespit etmenizi sağlar.

Sonuç ve Bir Sonraki Adımınız

XSS, web uygulamalarının en yaygın ve zararlı açıklarından biridir; ancak doğru bir savunma stratejisiyle etkili bir şekilde önlenebilir. Girdi doğrulama, çıktı kaçışı, CSP ve WAF gibi katmanlı önlemleri bir arada uyguladığınızda, saldırı yüzdesi %70’in üzerinde azalır. Şimdi, sitenizde bu önlemleri hayata geçirmek için SEO hosting paketinizdeki güvenlik ayarlarını gözden geçirin ve WAF güvenlik duvarı kurulumunu tamamlayın. Güvenli bir web deneyimi, hem kullanıcılarınızı korur hem de arama motoru sıralamanızı olumlu etkiler.