# XSS (Siteler Arası Betik Çalıştırma (Cross-Site Scripting))

Adres: https://softwaredictionary.org/tr/terimler/xss
Kategori: Güvenlik
Son güncelleme: 2026-09-29

Kısaca: XSS, saldırganın güvenilir bir siteye kötü amaçlı JavaScript enjekte edip bu kodu diğer kullanıcıların tarayıcısında çalıştırmasına yol açan zafiyettir.

## XSS nedir?

Cross-site scripting, bir web uygulamasının yorum, arama terimi ya da URL parametresi gibi güvenilmeyen verileri önce güvenli hâle getirmeden sayfaya eklemesiyle ortaya çıkar. Tarayıcı, saldırganın betiğini sitenin kendi kodundan ayıramaz ve onu gerçek sitenin sahip olduğu izinlerle çalıştırır.

Betik çalışmaya başladığında sayfadaki verileri okuyabilir, oturum açmış kullanıcı gibi davranabilir, kullanıcının gördüklerini değiştirebilir ya da saldırgana bilgi gönderebilir. XSS üç ana biçimde görülür: yükün veritabanına kaydedilip her ziyaretçiye gösterildiği stored XSS, arama URL'si gibi bir istekten yansıtıldığı reflected XSS ve ön yüz JavaScript'inin güvenilmeyen veriyi sayfaya eklediği DOM-based XSS.

Temel savunma çıktı kodlamasıdır (output encoding): `<` ve `>` gibi özel karakterleri, veri HTML'e eklenmeden önce zararsız metne dönüştürmek. React, Vue ve Angular gibi framework'ler bunu varsayılan olarak yapar. Kullanıcı verisiyle `innerHTML` veya `dangerouslySetInnerHTML` gibi ham HTML alıcılarından kaçının, izin vermeniz gereken HTML'i iyi test edilmiş bir sanitizer kütüphanesiyle temizleyin ve hangi betiklerin çalışabileceğini kısıtlayan bir Content Security Policy (CSP) başlığı ekleyin. Oturum çerezlerini `HttpOnly` olarak işaretlemek, çerezleri betiklerin erişiminden uzak tutarak zararı sınırlar.

XSS sıklıkla CSRF ile karıştırılır. XSS'te saldırganın kodu güvenilir sitenin içinde çalışır; CSRF'te ise saldırganın kendi sitesi tarayıcıyı, güvenilir siteye istek göndermesi için kandırır. Bir XSS açığı, çoğu CSRF savunmasını da işlevsiz bırakabilir.

## Önemli noktalar

- XSS, saldırganın sağladığı betiklerin diğer kullanıcıların tarayıcısında çalışmasına izin verir.
- Güvenilmeyen verinin kodlanmadan sayfalara eklenmesinden kaynaklanır.
- Üç ana türü stored, reflected ve DOM-based XSS'tir.
- Çıktı kodlaması, güvenli DOM API'leri, sanitization ve CSP ile savunun.
- `HttpOnly` çerezler, başarılı bir saldırının etkisini azaltır.

## Örnek: Kullanıcı girdisini göstermenin savunmasız ve güvenli yolu

```javascript
const comment = getCommentFromUser(); // e.g. <img src=x onerror=alert(1)>

// Vulnerable: the browser parses the text as HTML and runs the script
commentBox.innerHTML = comment;

// Safe: the input is treated as plain text, never as HTML
commentBox.textContent = comment;
```

## Sık sorulan sorular

**XSS ile CSRF arasındaki fark nedir?**

XSS, güvenilir bir web sitesine kötü amaçlı betik enjekte eder ve bu betik kurbanların tarayıcısında çalışır. CSRF ise kurbanın tarayıcısını, oturum açtığı bir siteye istenmeyen bir istek göndermesi için kandırır; o sitede herhangi bir kod çalıştırmaz.

**React, XSS'i engeller mi?**

React, JSX ile eklenen değerleri varsayılan olarak escape eder ve bu, en yaygın XSS durumlarını engeller. Yine de `dangerouslySetInnerHTML`, `javascript:` URL'leri gibi güvensiz `href` değerleri ya da güvenilmeyen üçüncü taraf kodlarla zafiyet oluşturabilirsiniz.

**Content Security Policy nedir?**

Content Security Policy, tarayıcıya hangi betik, stil ve diğer kaynakların yüklenebileceğini söyleyen bir HTTP yanıt başlığıdır. Sıkı bir politika, XSS açığı olsa bile enjekte edilen betiklerin çalışmasını engelleyebilir.

## Kaynaklar

- [OWASP: Cross Site Scripting (XSS)](https://community.owasp.org/attacks/xss/)
- [OWASP Cheat Sheet: Cross Site Scripting Prevention](https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
