Siteler arası betik çalıştırma (XSS)
XSS’te dışarıdan gelen içerik tarayıcıda çalıştırılan koda dönüşür. Belirleyici olan, uygulamanın girdiyi sayfaya nasıl yerleştirdiğidir.
Siteler arası betik çalıştırma, kısaca XSS, dışarıdan gelen kodun etkilenen web sitesinin bağlamında tarayıcıda yürütüldüğü saldırıdır. Uygulama, güvenilmeyen veriyi sayfaya tarayıcının çalıştırılabilir içerik olarak yorumlayacağı biçimde aktarır. Kod örneğin görünen sayfayı değiştirebilir veya oturum açmış kişinin yetkileriyle istek gönderebilir.
Proje portalındaki bir yorum
Kurgusal bir proje portalı yorumları noteText alanında saklar ve daha sonra diğer ekip üyelerine gösterir. Alan normal metin içindir. İçeriği incelenmeden HTML olarak yerleştirilirse buna uygun hazırlanmış girdiler çalıştırılabilir içerik ekleyebilir. Yorumu kendi veritabanınızda saklamak, onu sonraki gösterim için güvenilir hâle getirmez. Bağlı sistemlerden gelen değerler de gösterildikleri yere uygun biçimde ele alınmalıdır.
Yorum yalnız metin olacaksa uygulama buna uygun metin gösterimini veya kullandığı framework’ün güvenli varsayılan çıktısını kullanır. Biçimlendirilmiş HTML’ye bilinçli olarak izin verilecekse hangi içeriklerin kabul edildiği belirlenmiş, bakımı sürdürülen bir temizleme çözümü gerekir.
Koruma, çıktının yerleştirildiği yere bağlıdır
MDN ve OWASP; metin, HTML, öznitelik ve diğer çıktı bağlamlarının işlenmesini ayırır. Normal HTML metnine uygun kodlama, JavaScript veya URL’ler için genel bir koruma değildir. Yalnız girdi doğrulaması, çıktı sırasında gereken korumanın yerini tutmaz.
Content Security Policy, hangi kodun yürütülebileceğini ayrıca sınırlayabilir. Güvenli çıktı noktalarının veya gereken HTML temizliğinin yerini almaz. Portal öyküsü bu ayrımı açıklar; yapılmış bir güvenlik testini anlatmaz.
Kaynaklar
İlgili terimler
- FrontendFrontend, uygulamanın kullanıcıyla etkileşen arayüzüdür. Tarayıcıdaki yararlı geri bildirim, sunucudaki bağlayıcı kontrolün yerini tutmaz.
- JavaScriptJavaScript, tarayıcıda ve dışında uygulama mantığı için kullanılan programlama dilidir. HTML ve CSS’ten farklı görev üstlenir.
- HTMLHTML, web içeriğinin yapısını ve anlamını tanımlar. Başlık, tablo ve giriş alanı gibi öğelerin görevlerini belirtir.
- Veri minimizasyonuVeri minimizasyonu, kişisel verileri belirli amaç için uygun, ilgili ve gerekli olan kapsamla sınırlar.
- Veri saklama politikasıVeri saklama politikası, saklamanın amacını, başlangıcını, süresini ve sonunu belirler. Silme işleri ve kopyalar teknik olarak ele alınmalıdır.
- Zarf şifrelemeZarf şifreleme, veri anahtarını onu koruyan anahtardan ayırır. Şifreli dosya ile paketlenmiş veri anahtarı birlikte ele alınmalıdır.
Projeniz ASES ile
Projenizi bize anlatın. İlk değerlendirmemizle size dönelim.