HTML ayrıştırma ve temizleme: standardın içinden
HTML standardındaki ayrıştırma kurallarını, hata düzeltmeyi ve DOM kurulumunu inceler; güvenli bir HTML temizleyicinin neden zor olduğunu kendi denemelerinle görürsün.
Seviye 501 · 13 ders · 12 pratik lab
Dersler
Ayrıştırma algoritması
- HTML standardını okumayı öğrenmek
- Belirteçleyici durumları
- Ağaç kurma ve ekleme kipleri
- Hata düzeltme: kapanmamış ve yanlış iç içe geçmiş etiketler
- Kısa görev: bozuk HTML’in DOM’unu önceden tahmin et
Özel bağlamlar
- script, style ve textarea’nın özel kuralları
- SVG ve MathML içinde ayrıştırma
- Serileştirme ve gidiş-dönüş farkları
- Kısa görev: gidiş-dönüşte değişen bir parça bul
Temizleme
- İzin listesine dayalı temizleyici tasarlamak
- Sanitizer API ve DOMPurify karşılaştırması
- Trusted Types ile tehlikeli atamaları kilitlemek
- Bitirme görevi: bir temizleyiciyi sına ve raporla
Pratik lablar
- Bozuk HTML'in ağacını tahmin et: Beş bozuk parçanın DOM'unu tahmin et ve html5lib çıktısıyla karşılaştır.
- Yanlış iç içe etiketleri çöz: b ve i etiketleri çapraz kapanan metnin hangi ağaca dönüştüğünü standarttaki "adoption agency" algoritmasıyla açıkla.
- Tablo içindeki taşmayı açıkla: Tablonun içine doğrudan yazılan metnin nereye taşındığını standarttaki ekleme kiplerine bakarak göster.
- textarea ve script içeriğini gözlemle: textarea, title ve script içine yazılan etiketlerin neden etiket olarak ayrıştırılmadığını örneklerle göster.
- SVG içinde farklı ayrıştırmayı bul: Aynı parçanın HTML ve SVG bağlamında farklı ağaç ürettiği üç örnek hazırla ve nedenini açıkla.
- Gidiş-dönüşte değişen parçayı bul: innerHTML ile serileştirip yeniden ayrıştırınca anlamı değişen bir parça bul ve neden tehlikeli olduğunu yaz.
- İzin listesi kur: Yorum alanı için yalnızca b, i, a ve p'ye izin veren basit bir izin listesi temizleyicisi yaz.
- Temizleyiciyi atlatma girişimlerini dene: Hazır test listesindeki zararlı parçalarla kendi temizleyicini dene, geçenleri bul ve kapat.
- Temizleyicileri karşılaştır: Aynı yirmi girdiyi kendi temizleyicin, DOMPurify ve Sanitizer API ile işle ve farkları raporla.
- Tehlikeli yazma noktalarını listele: Örnek uygulamada innerHTML, eval ve document.write kullanılan yerleri bul ve listele.
- Trusted Types'ı rapor kipinde aç: CSP ile Trusted Types'ı yalnızca raporlayarak aç ve gelen ihlalleri sınıflandır.
- Trusted Types'ı zorunlu kıl: Kalan ihlalleri bir politika ile düzeltip Trusted Types'ı zorunlu hale getir ve uygulamanın çalıştığını doğrula.
Kurs hakkında
HTML standardındaki ayrıştırma kurallarını, hata düzeltmeyi ve DOM kurulumunu inceler; güvenli bir HTML temizleyicinin neden zor olduğunu kendi denemelerinle görürsün.
Ne öğreneceksin
- Ayrıştırma algoritması
- Özel bağlamlar
- Temizleme
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 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.