Ders 4.2: Siteler arası betik çalıştırma (XSS)
Tarayıcıdaki enjeksiyon: bir sayfa ziyaretçi girdisini HTML olarak eklediğinde, bir saldırgan onu sitenin kökeni içinde, giriş yapmış kullanıcının görebildiği ve yapabildiği her şeyle birlikte JavaScript çalıştırmaya zorlayabilir. Yansıyan, kalıcı ve DOM tabanlı XSS, bir saldırganın onunla ne yapabileceği ve savunmalar: bağlama duyarlı çıktı kodlaması (PHP'de htmlspecialchars), güvenli şablonlar, HttpOnly çerezler ve bir İçerik Güvenliği Politikası. Laboratuvarda arama sayfasına dün eklenen bir başlık, arama metnini kaçışlamadan yankılıyor. HTML enjekte ediyor, sonra bir betik, satırı buluyor, çıktıyı kodluyor ve betiğin artık zararsız metin olarak gösterildiğini kanıtlıyorsun.
19 dk
Bu derste öğreneceklerin
- XSS'in nasıl olduğunu ve neye izin verdiğini açıklamak
- Yansıyan, kalıcı ve DOM tabanlı XSS'i ayırt etmek
- Çıktıyı htmlspecialchars ile kodlamak
- CSP ve HttpOnly'nin XSS'i nasıl sınırladığını açıklamak
- Yansıyan bir XSS'i düzeltmek ve kanıtlamak
Temel terimler
- Siteler arası betik çalıştırma (XSS)
- Bir saldırganın kendi JavaScript'ini hedef sitenin bir sayfasında, kurbanın tarayıcısında çalıştırması.
- Yansıyan XSS
- Betik istekten (çoğu zaman bir bağlantıdan) gelir ve yanıtta geri yankılanır.
- Kalıcı XSS
- Betik uygulama tarafından kaydedilir (bir yorum, bir profil adı, bir mesaj) ve o sayfanın her ziyaretçisine gösterilir.
- DOM tabanlı XSS
- Sayfanın kendi JavaScript'inin, sunucu işin içine girmeden, güvenilmeyen veriyi sayfaya yazması (örneğin innerHTML ile).
- Çıktı kodlaması
- Çıktının dilinde (HTML, bir öznitelik, JavaScript, bir URL) anlamı olan karakterleri zararsız bir biçime dönüştürmek.
← TCP: üçlü el sıkışma, bayraklar ve bağlantı durumları · Tüm dersler · Derinlemesine savunma ve en az yetki ilkesi →