Siteler Arası Betik Çalıştırma (XSS) Nedir?
Siteler arası betik çalıştırma (XSS, cross-site scripting), saldırganın hedef sitede kendi kodunu sitenin parçasıymış gibi çalıştırabildiği saldırıdır; temizlenmeden sayfaya yazılan kullanıcı girdisinden kaynaklanır.
Diğer Adları: XSS, Cross-Site Scripting
Siteler Arası Betik Çalıştırma Nasıl Gerçekleşir?
MDN’ye göre her XSS saldırısı, sitenin iki şey yapmasına dayanır: saldırganın hazırlayabileceği bir girdiyi kabul etmek ve bu girdiyi, JavaScript olarak çalıştırılamayacağından emin olmadan, yani temizlemeden sayfaya yazmak. Girdi bir ürün yorumu, ürün sorusu, arama kutusu, form alanı ya da adresteki bir parametre olabilir.
Siteler Arası Betik Çalıştırmanın Sonuçları
Sayfaya yerleşen kod, sitenin kendi kodunun yapabildiği her şeyi yapabilir. MDN iki örnek verir: saldırgan yüklenen sayfaların içeriğini ve tarayıcının yerel depolamasındaki verileri okuyup değiştirebilir; kullanıcının kimlik bilgileriyle HTTP istekleri göndererek onun yerine işlem yapabilir ya da hassas verilere erişebilir. Bir mağazada bu, hesap bilgilerinin ya da sayfaya girilen bilgilerin ele geçirilmesi anlamına gelebilir.
Siteler Arası Betik Çalıştırmaya Karşı Önlemler
- Kullanıcıdan gelen her içerik (yorum, ürün sorusu, ad soyad, arama ifadesi) sayfaya yazılmadan önce temizlenir ya da düz metne çevrilir.
- İçerik güvenliği politikası, izin verilmeyen kaynaklardan gelen ve izinsiz satır içi betiklerin çalışmasını engelleyerek ikinci bir savunma katmanı oluşturur; MDN, politikanın girdi temizlemenin yerine geçmediğini vurgular.
- Tema ve eklentiler güncel tutulur; panelde ham kod eklenebilen alanlar yalnızca yetkili kişilere açılır.
Örnek: Bir mağazanın ürün yorumu alanı, yorum metnini olduğu gibi sayfaya yazar. Bir saldırgan yoruma betik ekler ve yorumu açan her ziyaretçinin tarayıcısında bu betik çalışır. Yorum metni sayfaya yazılmadan önce düz metne çevrildiğinde betik çalışmaz, yalnızca yazı olarak görünür.
Siteler Arası Betik Çalıştırma Hakkında Sık Sorulan Sorular
XSS ile SQL enjeksiyonu arasındaki fark nedir?
SQL enjeksiyonu sunucudaki veritabanını hedef alır ve zararlı komutu veritabanında çalıştırır. XSS ise zararlı kodu ziyaretçinin tarayıcısında, sitenin sayfası içinde çalıştırır.
Hazır bir e-ticaret altyapısı kullanan mağaza XSS’ten etkilenir mi?
Altyapı temel korumaları sağlasa da temaya eklenen özel kodlar, eklentiler ve ham kod yazılabilen alanlar yeni açıklar oluşturabilir. Bu alanlar düzenli olarak gözden geçirilir.
XSS açığı nasıl fark edilir?
Kullanıcı girdisinin sayfaya yazıldığı yerler, yani yorumlar, arama sonuçları ve form hata mesajları düzenli olarak denetlenir. Yetkili uzmanlarca yapılan sızma testleri ve güvenlik taramaları da bu açıkları arar.