Cross-Site Scripting (XSS) Nedir? Stored, Reflected, DOM-Based XSS ve Önleme Yöntemleri
XSS (Cross-Site Scripting) nedir, türleri nelerdir ve web uygulamanızı nasıl korursunuz? SecureSys uzmanlarından kapsamlı rehber.
Cross-Site Scripting (XSS) Nedir?
Cross-Site Scripting (XSS), saldırganın web uygulamasına zararlı istemci tarafı kodları (genellikle JavaScript) enjekte ederek bu kodların başka kullanıcıların tarayıcılarında çalıştırılmasını sağlayan kritik bir güvenlik açığıdır. SQL Injection doğrudan veritabanını hedef alırken, XSS kullanıcıyı hedef alır — bu nedenle oturum bilgileri, kullanıcı hesapları ve tarayıcı üzerinden erişilebilen hassas veriler de risk altına girer.
Modern web uygulamalarında XSS açıkları; yorum alanları, mesajlaşma modülleri, arama kutuları, profil bilgileri, yönetim panelleri ve API'den dönen verilerin istemci tarafında işlenmesi sırasında ortaya çıkabilir. Birçok kurum XSS'i yalnızca "ekrana JavaScript yazdırma" problemi olarak görse de, başarılı bir XSS saldırısı kullanıcı oturumlarının ele geçirilmesi, kimlik avı (phishing) ve yetkisiz işlemler gibi ciddi sonuçlara neden olabilir.
XSS Neden Kritik Bir Güvenlik Riskidir?
XSS saldırıları doğrudan sunucuyu ele geçirmese de, uygulamaya güvenerek işlem yapan gerçek kullanıcıları hedef aldığı için son derece tehlikelidir. Özellikle yönetici yetkisine sahip bir kullanıcının tarayıcısında çalışan zararlı kod, saldırgana sistem üzerinde dolaylı ancak güçlü bir kontrol sağlayabilir — yönetici oturumlarının ele geçirilmesi, kurumsal verilerin istemci tarafında görüntülenmesi ve kimlik doğrulama bilgilerinin çalınması gibi sonuçlar doğurabilir.
XSS Türleri
1. Stored XSS (Kalıcı XSS)
Saldırganın zararlı kodu uygulamanın veritabanına kaydetmesiyle oluşur. Zararlı içerik daha sonra sayfayı görüntüleyen tüm kullanıcılara sunulur — ürün yorumları, destek talepleri, forum mesajları veya profil açıklamaları gibi alanlar üzerinden. Bu tür XSS açıkları en yüksek etkiye sahip senaryolar arasında yer alır.
2. Reflected XSS
Zararlı girdinin uygulama tarafından doğrudan kullanıcıya geri döndürülmesiyle oluşur; genellikle arama sayfaları, hata mesajları veya URL parametreleri üzerinden görülür. Saldırgan hazırladığı özel bağlantıyı kullanıcıya gönderir, kullanıcı açtığında zararlı kod tarayıcıda çalışır. Sıklıkla sosyal mühendislik saldırılarıyla birlikte kullanılır.
3. DOM-Based XSS
Modern JavaScript uygulamalarında en sık karşılaşılan XSS türlerinden biridir. Zafiyet sunucudan değil, istemci tarafındaki JavaScript kodundan kaynaklanır. Tek sayfa uygulamaları (SPA), React, Angular, Vue gibi framework kullanan sistemlerde bu senaryolar dikkatle incelenmelidir.
Gerçek Bir Senaryo
Bir kurumun yardım masası uygulamasında kullanıcılar destek taleplerine açıklama ekleyebilmektedir. Yapılan sızma testi sırasında açıklama alanına eklenen zararlı JavaScript kodunun filtrelenmediği tespit edilmiştir. Destek ekibi her talebi görüntülediğinde zararlı kod çalışmakta ve oturum bilgileri saldırganın kontrolündeki sunucuya gönderilmektedir. Saldırgan doğrudan sistemi hacklememiş, ancak yönetici hesabını ele geçirerek uygulama üzerinde tam yetki elde edebilmiştir.
SecureSys XSS Test Yaklaşımı
XSS testlerinde yalnızca otomatik tarayıcı çıktılarıyla yetinmiyoruz. Her uygulama manuel olarak analiz edilerek kullanıcı girdilerinin işlendiği tüm noktalar incelenir: Reflected/Stored/DOM-Based XSS senaryoları, HTML Injection kontrolleri, Rich Text Editor güvenliği, Content Security Policy (CSP) yapılandırması ve cookie güvenlik bayrakları (HttpOnly, Secure, SameSite).
XSS Nasıl Önlenebilir?
- Kullanıcı girdileri bağlama uygun şekilde encode edilmelidir.
- HTML çıktıları güvenli biçimde filtrelenmelidir.
- Gereksiz
innerHTMLkullanımı yerine güvenli DOM yöntemleri tercih edilmelidir. - Content Security Policy (CSP) etkinleştirilmelidir.
- Cookie'lerde HttpOnly, Secure ve SameSite öznitelikleri kullanılmalıdır.
- Düzenli kod incelemeleri ve bağımsız sızma testleri yapılmalıdır.
Olası Sonuç ve Kuruma Etkisi
| Olası Sonuç | Kuruma Etkisi |
|---|---|
| Oturum bilgilerinin ele geçirilmesi | Yetkisiz kullanıcı erişimi |
| Yönetici hesabının ele geçirilmesi | Kritik sistemlerin kontrolünün kaybedilmesi |
| Kimlik avı ekranlarının gösterilmesi | Kullanıcı güveninin zedelenmesi |
| Hassas verilerin istemci tarafında okunması | KVKK ve veri ihlali riski |
XSS ve diğer istemci taraflı güvenlik açıklarına karşı uygulamanızın test edilmesi için Web Uygulama Sızma Testi Hizmeti sayfamızı inceleyebilirsiniz.
İlgili Makaleler
Web Uygulama Güvenliği
OWASP Top 10 ve Web Uygulamalarında Test Edilen Güvenlik Açıkları
OWASP Top 10 nedir ve web uygulama sızma testinde hangi güvenlik açıkları test edilir? SecureSys kapsamlı rehberi.
Broken Access Control Nedir? IDOR, BOLA ve Yetkilendirme Zafiyetleri
Broken Access Control, IDOR ve BOLA nedir? Yatay/dikey yetki yükseltme senaryoları ve önleme yöntemleri. SecureSys uzman rehberi.
Kimlik Doğrulama ve Oturum Yönetimi Güvenliği: MFA, Brute Force, Session Hijacking
Kimlik doğrulama ve oturum yönetimi güvenliği: MFA, brute force, credential stuffing ve session hijacking riskleri. SecureSys uzman rehberi.
API Güvenliği Nedir? OWASP API Security Top 10 ve BOLA Riskleri
API güvenliği nedir, OWASP API Security Top 10 riskleri ve BOLA açıkları nasıl önlenir? SecureSys uzman rehberi.
İş Mantığı (Business Logic) Güvenlik Açıkları: Fiyat Manipülasyonu ve Kupon İstismarı
İş mantığı (Business Logic) güvenlik açıkları nedir? Fiyat manipülasyonu, kupon istismarı ve race condition riskleri. SecureSys rehberi.
Web Uygulama Sızma Testi Metodolojisi: OWASP WSTG, PTES, NIST SP 800-115
SecureSys web uygulama sızma testi metodolojisi: planlama, bilgi toplama, manuel test, risk değerlendirme ve raporlama aşamaları.
Bu konuda profesyonel destek mi arıyorsunuz?
Uzman ekibimiz ücretsiz danışmanlık için sizi en kısa sürede arasın.