XSS ve CSP derinlemesine
Zor çıktı bağlamlarında, çerçevelerde ve zengin metinde XSS’i tanır; nonce tabanlı sıkı CSP, Trusted Types ve doğru yapılandırılmış temizleyicilerle tek sayfalı bir uygulamayı korursun.
Seviye 301 · 15 ders · 12 pratik lab
Dersler
Zor bağlamlar
- Öznitelik ve JavaScript dizesi bağlamında kaçış hataları
- Mutasyon XSS: temizleyiciyi şaşırtan ayrıştırma
- Çerçevelerde XSS: React, Vue ve Angular’daki kaçış kapıları
- Markdown ve zengin metin düzenleyicilerinde XSS
- Kısa görev: bir React bileşenindeki dangerouslySetInnerHTML kullanımını güvenli hâle getir
Sıkı CSP
- Nonce ve özetlerle sıkı CSP
- strict-dynamic ve modern CSP yaklaşımı
- Zayıf CSP: unsafe-inline, geniş alan adları ve JSONP uç noktaları
- CSP’yi rapor modunda devreye almak ve ihlal raporlarını okumak
- Kısa görev: lab uygulamasına nonce tabanlı CSP ekle ve kırılan sayfaları düzelt
Tarayıcı korumaları
- Trusted Types: DOM XSS’i kökten engellemek
- Temizleyiciyi doğru yapılandırmak ve güncel tutmak
- CSP raporlarını toplamak ve uyarıya dönüştürmek
- Bir XSS düzeltmesinin benzerlerini kod tabanında aramak
- Bitirme görevi: tek sayfalı bir uygulamayı Trusted Types ve sıkı CSP’ye taşı
Pratik lablar
- dangerouslySetInnerHTML ile gelen XSS: React bileşenindeki dangerouslySetInnerHTML kullanımının XSS'e yol açtığını kanıtla ve temizleyiciyle ya da düz metinle düzelt.
- Markdown düzenleyicide bağlantı şeması: Markdown bağlantılarında javascript: şemasının çalıştığını kanıtla ve bağlantı şemalarını izin listesiyle sınırla.
- Vue'da v-html ile kaçış kapısı: Bildirim bileşenindeki v-html kullanımında XSS'i kanıtla ve bileşeni metin bağlamasıyla yeniden yaz.
- Mutasyon XSS: temizleyici geçti, tarayıcı değiştirdi: Eski bir temizleyici sürümünün geçirdiği ve tarayıcıda değişerek çalışan girdiyi lab'da göster ve temizleyiciyi güncelleyip yeniden test et.
- Nonce tabanlı CSP ekle: Lab uygulamasına her yanıtta yeni nonce üreten CSP ekle ve satır içi betiklere nonce'u dağıt.
- Geniş alan adı izinli CSP: Tüm bir CDN alan adına izin veren politikanın neden atlanabildiğini lab'daki JSONP uç noktasıyla göster ve strict-dynamic'e geç.
- Rapor modundan engelleme moduna: Bir haftalık ihlal raporlarını analiz et, meşru kaynakları politikaya ekle ve politikayı engelleme moduna geçir.
- Sıkı CSP'de kırılan sayfaları onar: Sıkı CSP'ye geçince kırılan olay işleyicilerini ve satır içi stilleri bul ve politikayı gevşetmeden düzelt.
- CSP ihlal raporlarından uyarı: CSP rapor toplayıcısındaki gürültüden gerçek enjeksiyon denemelerini ayıran bir kural yaz ve tekrar oynatılan denemeyle test et.
- Trusted Types'ı rapor modunda aç: Tek sayfalı uygulamada Trusted Types'ı rapor modunda aç ve ihlal eden hedefleri listeleyip bir politikayla düzelt.
- Bir XSS düzeltmesinin benzerlerini ara: Kapattığın bir XSS'in kalıbını kod tabanında ara, aynı hatayı taşıyan diğer yerleri bul ve düzelt.
- Tek sayfalı uygulamayı Trusted Types'a taşı: Kurgusal Kestrel Notlar uygulamasını sıkı CSP ve Trusted Types ile engelleme moduna taşı ve tüm işlevlerin çalıştığını test et.
Kurs hakkında
Zor çıktı bağlamlarında, çerçevelerde ve zengin metinde XSS’i tanır; nonce tabanlı sıkı CSP, Trusted Types ve doğru yapılandırılmış temizleyicilerle tek sayfalı bir uygulamayı korursun.
Ne öğreneceksin
- Zor bağlamlar
- Sıkı CSP
- Tarayıcı korumaları
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux masaüstünde geçer; araçlar pencereli arayüzleriyle hazırdır. Kurulum gerekmez, bilgisayar ekranı önerilir.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.