CodeBlanks Logo Icon CodeBlanks

innerHTML riskleri

JavaScript kursu · Uzman · Ders 26/63

innerHTML'in XSS açığı nasıl oluşturduğunu ve güvenli alternatifleri öğrenirsin.

innerHTML'in riski

innerHTML, atadığın dizeyi HTML olarak yorumlar. Eğer bu dize kullanıcıdan geliyorsa, içindeki etiketler ve scriptler çalışır. Bu, en sık görülen XSS kapısıdır.

Örneğin el.innerHTML = userInput yazdığında, userInput içindeki <script> etiketi tarayıcı tarafından kod olarak işlenir. Verinin güven olduğundan emin olmadıkça innerHTML'den uzak dur.

textContent güvenlidir

textContent, atadığın değeri HTML olarak değil, düz metin olarak yazar. Etiketler ve varlıklar yorumlanmaz; tarayıcı onları olduğu gibi görüntüler.

Yani el.textContent = userInput yazdığında, girdi ne olursa olsun etiket olarak işlenmez. Kullanıcıdan gelen metni bir öğeye yazacaksan ilk seçenek her zaman textContent olmalıdır.

Uygulama Rozet oluştur

createBadge fonksiyonu yaz, parametre label. document.createElement('span') ile badge öğesi oluştur. badge.textContent'e label değerini ata ve badge döndür.

Örnek çözümü göster
Önce fonksiyonu tanımla, sonra span öğesi oluştur, textContent'e label ata, son olarak badge'i döndür.
Örnek çözüm:
function createBadge(label) {
  const badge = document.createElement('span');
  badge.textContent = label;
  return badge;
}

Kendini test et

  1. Hangisi güvenli DOM güncelleme yöntemidir?

    • element.textContent = userInput
    • element.innerHTML = userInput
    • element.outerHTML = userInput
    • document.write(userInput)
    Cevabı göster

    element.textContent = userInput — Doğru! textContent değeri düz metin olarak yazar ve XSS'i önler.

  2. textContent ile güvenli atama

    const el = document.getElementById('msg');
    el.____ = 'Hoş geldin';
    Cevabı göster
    const el = document.getElementById('msg');
    el.textContent = 'Hoş geldin';
  3. DOM özelliklerini eşleştir

    textContent
    metin olarak yazar
    innerHTML
    HTML olarak yorumlar
    outerHTML
    etiketi değiştirir
    innerText
    görünür metni verir

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