XSS (Cross-Site Scripting) Nedir?
Ayrıca: Cross-Site Scripting, siteler arası betik çalıştırma, XSS zafiyeti
XSS (Cross-Site Scripting), saldırganın bir web sayfasına kötü niyetli betik (genellikle JavaScript) yerleştirerek bu kodu diğer ziyaretçilerin tarayıcısında çalıştırmasına olanak veren bir güvenlik zafiyetidir.
Zafiyet, uygulamanın kullanıcı girdisini doğru biçimde temizlemeden veya kaçış uygulamadan sayfaya yansıtmasından kaynaklanır. XSS üç ana biçimde görülür: kalıcı (stored) XSS'te kötü kod veritabanına kaydedilir ve her açılışta çalışır; yansıyan (reflected) XSS'te kod özel hazırlanmış bir bağlantı üzerinden anlık taşınır; DOM tabanlı XSS'te ise sorun tamamen tarayıcı tarafındaki betikte oluşur. Başarılı bir saldırıda çerezler ve oturum bilgileri çalınabilir, kullanıcı adına işlem yapılabilir, sahte formlar gösterilebilir veya ziyaretçi zararlı sitelere yönlendirilebilir.
Nasıl önlenir?
Temel savunma, tüm kullanıcı girdisini çıktı bağlamına uygun biçimde kaçışlamak (output encoding), girdiyi doğrulamak ve modern çerçevelerin otomatik kaçış özelliklerini kapatmamaktır. Content Security Policy (CSP) başlığı, çalıştırılabilecek betik kaynaklarını sınırlayarak etkiyi büyük ölçüde azaltır. İstek düzeyinde ek koruma için bir WAF kullanılabilir. Benzer girdi kaynaklı zafiyetler için SQL Injection ve oturum güvenliği için CSRF konularına da bakabilirsiniz.
Sitenizin XSS'e karşı ne kadar dayanıklı olduğunu görmek için profesyonel bir sızma testi en güvenilir yöntemdir. Daha geniş bir bakış için web sitesi güvenliği nasıl sağlanır yazımızı okuyabilirsiniz.
Uygulamanızı XSS zafiyetlerine karşı denetlememizi isterseniz iletişime geçin.