CodeBlanks Logo Icon CodeBlanks

XSS nedir?

JavaScript kursu · Uzman · Ders 25/63

Cross-site scripting (XSS) saldırılarının ne olduğunu ve türlerini öğrenirsin.

XSS nedir?

XSS (cross-site scripting), saldırganın sayfaya kendi JavaScript kodunu enjekte ettiği bir saldırıdır. Kullanıcının oturum çerezini çalmak, sayfayı değiştirmek veya kimlik avı yapmak için kullanılır.

Üç yaygın türü vardır: stored (sunucuda saklanır), reflected (URL ile yansır) ve DOM (istemci tarafında işlenir). Hepsi güvenilmeyen verinin doğru kodlanmadan sayfaya yazılmasından doğar.

Enjeksiyon nasıl olur?

Bir yorum kutusuna <script>alert(1)</script> yazan saldırgan, bu veriyi ham HTML ile ekrana basan herkesi etkiler. Sunucu veriyi olduğu gibi saklarsa stored XSS oluşur.

URL parametresini doğrudan sayfaya yazan bir kod parçası reflected XSS yaratır. İstemci tarafında location.hash gibi veriyi işleyen kod ise DOM XSS üretir. Savunma her zaman çıktı kodlamadır.

Uygulama Güvenli karşılama yaz

renderGreeting adında bir fonksiyon yaz. Parametre name. box değişkenini document.getElementById('box') ile al ve box.textContent'e 'Merhaba ' + name ata. Böylece XSS riskini önlemiş olursun.

Örnek çözümü göster
Önce fonksiyonu tanımla, sonra box değişkenini al, son olarak textContent'e değeri ata.
Örnek çözüm:
function renderGreeting(name) {
  const box = document.getElementById('box');
  box.textContent = 'Merhaba ' + name;
}

Kendini test et

  1. Aşağıdakilerden hangisi bir XSS türüdür?

    • Buffered
    • Cached
    • Stored
    • Deferred
    Cevabı göster

    Stored — Doğru! Stored XSS, enjekte edilen kodun sunucuda saklandığı türdür.

  2. Zararlı etiketi escape fonksiyonuna ver

    const payload = '____';
    Cevabı göster
    const payload = '<script>';
  3. XSS türlerini eşleştir

    Stored
    sunucuda saklanır
    Reflected
    URL ile yansır
    DOM
    istemcide işlenir
    XSS
    enjeksiyon saldırısı

Uzman bölümündeki tüm dersler