Kısaca özet
- XSS nedir sorusunun kısa cevabı: saldırganın bir web sayfasına kendi betiğini yerleştirmesi ve bu betiğin sayfayı açan ziyaretçinin tarayıcısında, sitenin yetkisiyle çalışmasıdır.
- Üç türü vardır: veritabanına kaydedilip herkese gösterilen stored, bağlantı üzerinden tek kişiye yansıyan reflected ve tamamen tarayıcıda oluşan DOM tabanlı XSS.
- En sık sonuçları oturum çerezinin çalınması, yönetici panelinde işlem yaptırılması, sahte giriş formu gösterilmesi ve ziyaretçinin başka siteye yönlendirilmesidir.
- Kalıcı çözüm çıktı kaçışlamadır: kullanıcı verisi sayfaya basılırken bağlamına göre zararsız metne çevrilir.
- İçerik Güvenliği Politikası (CSP) başlığı, kaçan bir açıkta bile tanımadığınız betiklerin çalışmasını sınırlar.
- WordPress sitelerde XSS açıklarının çoğu eklenti ve temalardan gelir; güncelleme ve az eklenti en etkili önlemdir.
Yorum onayı bekleyen bir mesajı açtınız ve ardından yönetici panelinde tanımadığınız bir kullanıcı oluştu. Ya da ziyaretçileriniz sitenize girdiklerinde bir anlığına başka bir sayfaya yönlendirildiklerini söylüyor. Bu tür şikâyetlerin arkasında sık görülen açıklardan biri XSS’tir. XSS nedir diye baktığınızda karşınıza çıkan tanımlar teknik görünür; site sahibi açısından özü şu: sitenize güvenen tarayıcı, saldırganın yazdığı kodu sizin kodunuz sanıp çalıştırır.
XSS Nedir, Tarayıcıda Ne Olur
XSS, İngilizce Cross-Site Scripting ifadesinin kısaltmasıdır; Türkçede siteler arası betik çalıştırma denir. Tarayıcılar bir sayfadaki betiğe, o sayfanın ait olduğu alan adının yetkilerini verir. Betik o alan adının çerezlerini okuyabilir, oturum açmış kullanıcı adına istek gönderebilir, sayfanın görünümünü değiştirebilir. Bu yetki sitenin kendi kodu için tasarlanmıştır.
Açık, site kullanıcıdan aldığı bir veriyi sayfaya işlemeden bastığında doğar. Bir yorum, arama kutusuna yazılan kelime ya da bağlantıdaki bir parametre sayfada gösterilirken HTML olarak yorumlanırsa, içine gömülmüş betik de çalışır. Tarayıcı bu betiğin siteye mi saldırgana mı ait olduğunu ayırt edemez. Ayrıntılı tanım ve örnek türler OWASP’ın XSS önleme rehberinde yer alıyor.
Bilgi
SQL injection sunucudaki veritabanını hedef alır; XSS ise ziyaretçinin tarayıcısını. Bu yüzden XSS’te çoğu zaman sunucu dosyalarınız sağlam kalır, zarar ise kullanıcılarınıza ve yönetici oturumunuza yönelir. İki açığın kökü ortaktır: kullanıcıdan gelen veriye gereğinden fazla güvenilmesi.
Stored, Reflected ve DOM Tabanlı XSS Farkı
XSS nedir sorusunun ikinci yarısı türlerdir. Üç tür, betiğin sayfaya nereden geldiğine göre ayrılır. Hangi türle karşı karşıya olduğunuz, etkinin ne kadar yayılacağını ve düzeltmenin nerede yapılacağını belirler.
| Tür | Betik nereden gelir | Kimi etkiler | Tipik yer | Düzeltme nerede yapılır |
|---|---|---|---|---|
| Stored (kalıcı) XSS | Veritabanına kaydedilmiş içerikten | Sayfayı açan herkesi, yöneticiler dahil | Yorumlar, profil alanları, ürün yorumları, iletişim formu kayıtları | Sunucu tarafında çıktı basılırken |
| Reflected (yansıyan) XSS | Bağlantıdaki parametreden, anında | Hazırlanmış bağlantıya tıklayan kişiyi | Arama sonuç sayfası, hata mesajları | Sunucu tarafında parametre sayfaya yazılırken |
| DOM tabanlı XSS | Sayfadaki JavaScript’in işlediği veriden | Hazırlanmış bağlantıyı açan kişiyi | Adres çubuğunu okuyan tek sayfa uygulamaları, filtre betikleri | İstemci tarafındaki JavaScript kodunda |
Site sahibi için en tehlikelisi stored XSS’tir, çünkü saldırganın kimseyi kandırmasına gerek kalmaz. Zararlı içeriği bir kez kaydeder; onay bekleyen yorumu inceleyen yönetici sayfayı açtığında betik, yönetici yetkisiyle çalışır.
XSS Açığı Siteye ve Ziyaretçiye Ne Yaptırır
Etkinin sınırı, betiğin çalıştığı sayfada kimin oturum açmış olduğudur. Sıradan bir ziyaretçide saldırgan kullanıcıyı sahte bir giriş formuna ya da zararlı bir siteye yönlendirebilir, sayfanın içeriğini değiştirebilir. Oturum çerezi betiğe açıksa, kullanıcının oturumunu kendi tarayıcısına taşıyabilir.
Yönetici tarafında sonuç ağırlaşır. Betik, yöneticinin tarayıcısında çalıştığı için yöneticinin yapabileceği her şeyi deneyebilir: yeni yönetici hesabı açmak, eklenti yüklemek, tema dosyasını düzenlemek. Bu noktada XSS, tam site ele geçirmeye dönüşür. Arama motorları da zararlı yönlendirme yapan sayfaları uyarıyla gösterebilir, bu da trafik kaybı demektir.
Örnek senaryo
Bir dil kursu, WordPress sitesinde öğrenci yorumlarını gösteren bir eklenti kullanıyor. Eklentinin eski sürümü, yorumdaki isim alanını sayfaya işlemeden basıyor. Saldırgan isim alanına betik gömülü bir yorum gönderiyor. Kurs yöneticisi yorumu onaylamak için panelde açtığı anda betik çalışıyor ve arka planda yeni bir yönetici hesabı oluşturuyor. Birkaç gün sonra sitenin ana sayfası kumar reklamlarına yönleniyor. Eklenti güncellenip gereksiz yönetici silinene, parolalar değiştirilene kadar site iki gün kapalı kalıyor.

XSS Nasıl Önlenir, Dört Katman
XSS’e karşı etkili savunma, verinin sayfaya girdiği her noktada doğru işlem yapılmasına dayanır. Aşağıdaki katmanlar birbirini tamamlar.
Çıktı kaçışlama. Kullanıcıdan gelen veri sayfaya basılırken bağlamına göre dönüştürülür. HTML gövdesinde özel karakterler varlık kodlarına çevrilir; öznitelik, JavaScript ve adres bağlamlarının her birinin kendi kuralı vardır. Kaçışlama girdiye değil çıktıya uygulanır, çünkü aynı veri farklı yerlerde farklı bağlamda gösterilebilir. Modern şablon motorları ve WordPress’in çıktı fonksiyonları bu işi hazır yapar; sorun, bu fonksiyonları kullanmayan eklenti ve temalardadır.
İçerik Güvenliği Politikası. CSP, sunucunun tarayıcıya “bu sayfada yalnız şu kaynaklardan gelen betikleri çalıştır” dediği bir HTTP başlığıdır. İyi kurulmuş bir politika, sayfaya sızmış satır içi betiğin çalışmasını engeller. MDN’in İçerik Güvenliği Politikası rehberi başlığın yapısını anlatıyor. Politikayı önce yalnız raporlama kipinde denemek, sitenin kendi betiklerini bozmadan ayar yapmanızı sağlar.
Güvenli çerez ayarları. Oturum çerezlerinin HttpOnly işaretiyle gönderilmesi, betiğin çerezi okumasını engeller. Secure ve SameSite işaretleri de çerezin nereye gönderileceğini sınırlar. Bu, açığı kapatmaz ama oturum çalma senaryosunu zorlaştırır.
Güncel eklenti ve tema. WordPress sitelerde yayımlanan XSS açıklarının önemli bir kısmı eklentilerde çıkar ve yamayla kapanır. Güncellemeleri geciktirmemek bu yüzden önemlidir; eklentilerin nasıl güvenle güncelleneceği WordPress eklentileri güncelleme kartında anlatılıyor.
Dikkat
Girdiden yalnız belirli etiketleri silen kara liste filtreleri XSS’e karşı güvenilir değildir. Tarayıcıların betik çalıştırabildiği yol sayısı çok fazladır ve filtreler düzenli olarak aşılır. Güvenli yöntem, veriyi gösterildiği bağlama göre kaçışlamak ve HTML girdisine gerçekten izin verilen yerlerde denetlenmiş bir temizleme kütüphanesi kullanmaktır.
WAF ve Güvenlik Eklentisi Yeterli mi
XSS nedir ve nasıl işler sorusunu cevapladıktan sonra akla gelen ilk çözüm genellikle bir güvenlik duvarıdır. Web uygulaması güvenlik duvarı, isteklerde bilinen betik kalıplarını arar ve eşleşenleri durdurur. Reflected XSS denemelerinin önemli kısmını yakalayabilir. Ancak DOM tabanlı XSS sunucuya hiç uğramayabilir, stored XSS de zararsız görünen parçalara bölünerek kaydedilebilir. WAF zaman kazandıran bir katmandır; kodu düzeltmez. Hangi site için ek bir WAF katmanının gerçekten değer kattığını WAF gerekir mi yazısı tartışıyor.
Açık istismar edilmişse temizlik ayrı bir süreçtir: açığı kapatmak, eklenen yönetici hesaplarını ve zararlı kayıtları silmek, tüm oturumları sonlandırıp parolaları değiştirmek. Bu sıranın tamamı site hacklenirse ne yapmalı rehberinde var.
Sonuç
XSS nedir sorusunun site sahibi için karşılığı, tarayıcının güvenini kötüye kullanan bir açıktır. Kalıcı çözüm çıktı kaçışlamadır; CSP, HttpOnly çerez ve WAF kaçan bir hatanın etkisini daraltır. WordPress kullanıyorsanız işin büyük kısmı eklenti seçimi ve güncellemedir: az, bakımı süren ve güncel eklenti.
Kontrol Listesi, XSS Riskini Azaltmak
- Eklenti ve temaları güncel tutun, bir yılı aşkın süredir güncellenmeyenleri değiştirin.
- Yorum, form ve profil alanı gibi kullanıcı içeriği kabul eden bileşenleri listeleyin.
- Onay bekleyen yorumları, zorunlu değilse, yönetici hesabı yerine düşük yetkili bir editör hesabıyla inceleyin.
- Oturum çerezlerinin HttpOnly ve Secure işaretli olduğunu tarayıcı geliştirici araçlarından kontrol edin.
- CSP başlığını önce raporlama kipinde deneyin, sonra uygulamaya alın.
- Özel kod yazdırdıysanız geliştiriciden çıktı kaçışlaması yapıldığının teyidini alın.
- Yönetici hesaplarında iki adımlı doğrulamayı açın.
Sıkça sorulan sorular
Teknik olmayan biri için XSS nedir, ziyaretçiye nasıl zarar verir?
XSS, sitenize yerleştirilen yabancı bir betiğin ziyaretçinin tarayıcısında sitenizin yetkisiyle çalışmasıdır. Ziyaretçi sahte bir giriş formuna ya da zararlı bir siteye yönlendirilebilir, gördüğü sayfa değiştirilebilir. Oturum çerezleri korunmuyorsa açık olan oturumu saldırgana geçebilir. Ziyaretçi bunu sitenizden gelen bir sorun olarak algılar, bu da güven kaybı demektir.
SSL sertifikası XSS’e karşı korur mu?
Korumaz. SSL, tarayıcı ile sunucu arasındaki trafiği şifreler ve arada dinlemeyi engeller. XSS ise sitenin kendi içeriğine yerleşen betikle çalışır; bu betik şifreli bağlantı üzerinden de aynı şekilde teslim edilir. SSL gereklidir ve oturum çerezlerinin Secure işaretiyle gönderilmesini mümkün kılar, ama XSS için ayrı önlemler gerekir.
WordPress’te XSS açığı olup olmadığını nasıl anlarım?
En pratik yol, kullandığınız eklenti ve temaların sürümlerini yayımlanmış güvenlik bildirimleriyle karşılaştırmaktır. Birçok güvenlik eklentisi ve hosting paneli bilinen açık içeren sürümleri uyarır. Belirti olarak tanımadığınız yönetici hesapları, beklenmedik yönlendirmeler ve sayfa kaynağında sizin eklemediğiniz betik etiketleri aranır.
CSP kurmak siteyi bozar mı?
Aceleyle kurulursa bozabilir. Analitik, sohbet balonu, ödeme formu ve yazı tipi gibi dış kaynaklar politikada izin verilmezse çalışmaz. Bu yüzden CSP önce yalnız raporlama kipinde açılır, hangi kaynakların engelleneceği birkaç gün gözlenir, izin listesi buna göre tamamlanır ve ancak sonra uygulama kipine geçilir.
XSS açığı olan bir site Google’da cezalandırılır mı?
Açığın kendisi sıralamayı doğrudan etkilemez. İstismar edilip sayfalara zararlı yönlendirme ya da istenmeyen içerik eklenirse arama motoru siteyi güvenli olmayan olarak işaretleyebilir ve ziyaretçilere uyarı gösterebilir. Temizlik yapıldıktan sonra yeniden inceleme talebiyle uyarı kaldırılabilir, ama kaybedilen trafik ve güven zaman alır.
Narhost’ta
Web hosting paketlerimizde ücretsiz SSL, WP Toolkit Deluxe ile eklenti ve tema güncellemelerinin tek panelden yönetimi bulunan cPanel gelir.