0Pricing
React Academy · Ders

React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri

React'in varsayılan kaçış işleminin XSS'yi nasıl önlediğini, dangerouslySetInnerHTML'in ne zaman tehlikeli olduğunu ve üçüncü taraf betiklerin nasıl risk oluşturduğunu anlayın.

React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

React'in Yerleşik XSS Koruması

React, JSX aracılığıyla oluşturulan tüm değerleri DOM'a eklemeden önce otomatik olarak HTML olarak yorumlanamayacak şekilde dönüştürür. JSX içinde {userInput} yazdığınızda React, textContent atamasına eşdeğer bir işlem gerçekleştirir; değer HTML olarak değil, yalnızca metin olarak ele alınır. Bu, React uygulamalarındaki XSS saldırılarının çoğunu varsayılan olarak önler.

dangerouslySetInnerHTML Ne Yapar

dangerouslySetInnerHTML={{ __html: htmlString }}, otomatik kaçış işlemine izin vermeyen React özelliğidir. Bu adın özellikle endişe verici olması, HTML dizesinin güvenliğinden sizin sorumlu olduğunuzu belirtmek içindir. React, innerHTML özelliğini doğrudan ayarlar ve betikler ile olay işleyicileri de dâhil olmak üzere her türlü HTML'yi çalıştırır.

Meşru Kullanımlar

Zengin metin düzenleyicisinden (TipTap veya Quill gibi), HTML depolayan bir CMS'den ya da Markdown'ı HTML'ye dönüştüren bir dönüştürücüden gelen HTML'yi oluştururken gerçekten dangerouslySetInnerHTML kullanmanız gerekir. Bu kaynaklar, kaçış uygulanmış metin olarak değil HTML olarak oluşturulması gereken gerçek HTML işaretlemeleri üretir.

Saldırı Vektörü

HTML dizesi <script>stealCookies()</script> veya <img src=x onerror="stealData()"> içeriyorsa, bu dizeyi innerHTML olarak ayarlamak saldırganın kodunu çalıştırır. Arındırma uygulanmadan doğrudan dangerouslySetInnerHTML özelliğine aktarılan kullanıcı kaynaklı tüm içerikler kritik bir XSS güvenlik açığı oluşturur.

DOMPurify: Standart HTML Arındırıcısı

DOMPurify, tarayıcılar için sektör standardı HTML arındırıcısıdır. HTML dizesini yalıtılmış bir bağlamda ayrıştırır, tehlikeli öğeleri ve öznitelikleri (betik etiketleri, olay işleyicileri, javascript: URL'leri) kaldırır ve güvenli bir HTML dizesi döndürür. Kullanım: DOMPurify.sanitize(dirtyHtml) sonucunu dangerouslySetInnerHTML özelliğine aktarmadan önce kullanın.

Üçüncü Taraf Betiklerinin Riskleri

Üçüncü taraf betikleri (analiz araçları, sohbet bileşenleri ve reklam ağları) uygulamanızın JavaScript koduyla aynı izinlerle çalışır. Ele geçirilmiş veya kötü amaçlı bir üçüncü taraf betiği document.cookie değerini okuyabilir, localStorage erişebilir, form girdilerini okuyabilir ve dış sunuculara istek gönderebilir; üstelik kullanıcı bunu fark etmez.

Savunma Katmanı Olarak İçerik Güvenlik Politikası

İçerik Güvenlik Politikası, hangi betiklerin çalışmasına izin verildiğini belirten bir HTTP üst bilgisidir. DOM'a bir XSS yükü enjekte edilse bile, uygun şekilde yapılandırılmış bir CSP satır içi betikleri kısıtlayıp yalnızca izin verilen betik kaynaklarına izin vererek bunların çalışmasını engelleyebilir. CSP, girdi arındırmadan sonraki ikinci savunma hattıdır.

npm Üzerinden Tedarik Zinciri Saldırıları

npm paketleri gerçek bir XSS saldırı vektörüdür. Bir bağımlılık, ortam değişkenlerini veya kullanıcı verilerini dışarı aktaran kötü amaçlı kod içerebilir. 2022'deki node-ipc olayı ve 2021'deki ua-parser-js ele geçirilmesi, yaygın olarak kullanılan paketlerin ele geçirilip zararlı kodla değiştirilebileceğini gösterdi. Bağımlılıkları npm audit ile denetleyin ve kilit dosyaları kullanın.

Saldırganlar XSS ile Ne Yapar

Başarılı bir XSS saldırısı, saldırganın kullanıcının sessionStorage JWT belirtecini çalmasını (belirteci saldırganın kontrolündeki bir sunucuya göndermesini), kimliği doğrulanmış kullanıcı olarak işlem yapmasını (kullanıcının oturumunu kullanarak API çağrıları gerçekleştirmesini), kimlik avı içeriği göstermek için DOM'u değiştirmesini veya kullanıcının uygulamada bastığı her tuşu kaydetmesini sağlar.

Trusted Types API'si

Trusted Types tarayıcı API'si, tüm DOM veri aktarım noktalarının (innerHTML, eval, script.src) ham dizeler yerine özel türde nesneler almasını zorunlu kılar. Bu, dize tabanlı XSS yüklerinin platform düzeyinde DOM'a ulaşmasını önler. React, Trusted Types uyumluluğu üzerinde çalışmaktadır ve CSP bunu zorunlu kılabilir.

CMS İçeriği İçin Güvenli Yaklaşımlar

CMS HTML'sini oluşturmak için güvenli yaklaşım şöyledir: HTML'yi alın, güvenli etiket ve özniteliklerden oluşan bir izin verilenler listesiyle DOMPurify.sanitize() üzerinden geçirin, ardından dangerouslySetInnerHTML={{ __html: cleanHtml }} ile oluşturun. CMS'ye güveniyor olsanız bile arındırma adımını asla atlamayın; çünkü CMS veritabanının kendisi ele geçirilebilir.

DOMPurify'nin Amacı

DOMPurify.sanitize(htmlString) çağrıldığında DOMPurify ne yapar?

Ders Özeti

React, JSX değerlerine otomatik olarak kaçış uygulayarak XSS saldırılarının çoğunu önler. dangerouslySetInnerHTML, meşru HTML oluşturma işlemleri için bu korumayı devre dışı bırakır; girdiyi önce daima DOMPurify ile arındırın. Üçüncü taraf betikleri ve ele geçirilmiş npm paketleri, tedarik zinciri kaynaklı XSS vektörleridir. İçerik Güvenlik Politikası ikinci bir savunma katmanı sağlar. Başarılı bir XSS saldırısı belirteç hırsızlığına, başka birinin kimliğine bürünmeye ve kimlik avına olanak tanır.

Sıkça Sorulan Sorular

“React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri” dersi ücretsiz mi?

Evet — “React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri” dersinde ne öğreneceğim?

React'in varsayılan kaçış işleminin XSS'yi nasıl önlediğini, dangerouslySetInnerHTML'in ne zaman tehlikeli olduğunu ve üçüncü taraf betiklerin nasıl risk oluşturduğunu anlayın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. React'te XSS: dangerouslySetInnerHTML ve Üçüncü Taraf Betikleri
  2. React ve API Kurulumlarında CSRF Koruması
  3. React Uygulamaları için İçerik Güvenliği Politikası
  4. Gizli Bilgileri Yönetme ve Ortam Değişkenleri
← React Academy Sayfasına Dön