Bir yorum kutusuna yazdığınız küçük bir <script> etiketi, o sayfayı açan herkesin oturum çerezini saldırgana gönderebilir — XSS, web'in en yaygın ve en sinsi açıklarından biridir.
NEDİR? XSS (Cross-Site Scripting / Siteler Arası Betik Çalıştırma), bir saldırganın güvenilir bir web sitesine kendi zararlı JavaScript kodunu enjekte etmesi ve bu kodun, siteyi ziyaret eden başka kullanıcıların tarayıcısında çalıştırılması açığıdır. Saldırı kullanıcının tarayıcısında, sitenin kendi alan adı (origin) yetkisiyle çalıştığı için tarayıcı bu kodu güvenilir kabul eder. Temel kök neden: uygulamanın, kullanıcıdan gelen veriyi yeterince doğrulamadan/temizlemeden (sanitize) HTML çıktısına yerleştirmesidir. NASIL ÇALIŞIR? 1) Saldırgan, bir giriş alanına (yorum, arama kutusu, profil adı, URL parametresi) HTML/JavaScript içeren bir veri girer; örn. <script>...</script> ya da bir olay işleyici (onerror, onload). 2) Uygulama bu veriyi olduğu gibi saklar veya doğrudan sayfaya basar (encode etmez). 3) Sayfa başka bir kullanıcı tarafından açıldığında, tarayıcı enjekte edilen kodu sayfanın meşru bir parçası sanarak çalıştırır. 4) Çalışan kod; oturum çerezlerini (document.cookie) çalabilir, sahte formlar gösterebilir, tuş vuruşlarını dinleyebilir veya kullanıcı adına istek gönderebilir. TÜRLERİ • Depolanan (Stored/Persistent) XSS: Zararlı kod sunucu veritabanına kaydedilir (örn. bir forum yorumu) ve sayfayı açan herkeste tetiklenir. En tehlikelisidir. • Yansıtılan (Reflected) XSS: Kod istekle (URL parametresi) gönderilir ve yanıtta anında geri yansıtılır; genelde kurbana özel hazırlanmış bir link ile tetiklenir. • DOM tabanlı XSS: Sunucu hiç görmeden, tamamen tarayıcıdaki JavaScript'in güvenilmeyen veriyi DOM'a (innerHTML gibi) yazmasıyla oluşur. NEDEN ÖNEMLİ / İŞ YERİNDE XSS, OWASP listesinde yıllardır en sık görülen web açıkları arasındadır. Sonuçları: oturum çalma (hesap ele geçirme), kimlik avı sayfası enjeksiyonu, sahte işlem yaptırma, kurumsal itibar ve KVKK/GDPR ihlali riski. Bir e-ticaret veya bankacılık panelinde tek bir Stored XSS, binlerce kullanıcının hesabını riske atabilir. DİKKAT / İYİ UYGULAMA • Çıktı kodlama (output encoding): Kullanıcı verisini HTML, JavaScript veya URL bağlamına basmadan önce bağlama uygun şekilde encode et (ör. < → <). • Girdi doğrulama (allow-list): Yalnızca beklenen formatı kabul et. • Content Security Policy (CSP): Çalışacak betik kaynaklarını kısıtla; satır-içi (inline) script'i engelle. • Çerezlerde HttpOnly bayrağı: JavaScript'in oturum çerezine erişimini engeller. • innerHTML yerine textContent kullan; framework'lerin (React, Angular) otomatik kaçış mekanizmalarını devre dışı bırakma (dangerouslySetInnerHTML'den kaçın).
• XSS: güvenilir bir siteye enjekte edilen zararlı betiğin, başka kullanıcıların tarayıcısında o sitenin yetkisiyle çalışmasıdır. • Üç tür vardır: Depolanan (en tehlikeli), Yansıtılan ve DOM tabanlı. • En sık sonuç: oturum çerezi/hesap çalma, kimlik avı ve sahte işlem. • Savunma: bağlama uygun çıktı kodlama, girdi doğrulama, Content Security Policy ve HttpOnly çerezler.