XSS Nedir?
Peki bu saldırılar nasıl gerçekleşiyor? Hayal edin, bir kullanıcı web sitenizin yorumlar kısmına bir şeyler yazıyor. Ancak yazdığı yazı sadece metin değil, içinde bir JavaScript kodu barındırıyor. Eğer bu yazı, siteniz tarafından doğru şekilde temizlenmezse, diğer kullanıcılar bu zararlı kodu görüp çalıştırabilir. İşte bu, XSS saldırısı!
XSS Saldırılarının Türleri
# 1. Reflected XSS
Reflected XSS saldırısında, zararlı kod, hemen istemciye (yani kullanıcının tarayıcısına) yansır. Bu tür saldırılarda, kullanıcı bir URL'ye tıklayarak zararlı bir komut alır. Örneğin, URL'nin içinde zararlı bir JavaScript kodu olabilir ve bu, hedef web sitesine gönderildiğinde çalıştırılır.
Stored XSS saldırıları, zararlı JavaScript kodunun bir web sitesinde depolanmasıyla gerçekleşir. Yorumlar kısmı, kullanıcı profilleri veya mesajlar gibi özellikler bu tür saldırılar için hedef olabilir. Burada zararlı kod, site veritabanında saklanır ve sonrasında tüm kullanıcılara gösterilir.
# 3. DOM-based XSS
DOM-based XSS, özellikle JavaScript'in tarayıcıda nasıl çalıştığına odaklanır. Burada zararlı kod, web sayfasının DOM (Document Object Model) yapısındaki bir değişiklikle tetiklenir. Bu tür saldırılarda sunucu değil, doğrudan tarayıcı manipüle edilir.
XSS saldırılarına karşı korunmak, hem geliştiricinin hem de kullanıcıların güvenliğini sağlamak adına çok önemlidir. İşte XSS’den korunmak için bazı temel yöntemler:
# 1. Girdi Doğrulama ve Temizleme
Web uygulamanızda kullanıcıdan alınan her veriyi doğrulamak ve temizlemek gerekir. Kullanıcılara sağlanan input alanlarında sadece beklenen verilerin kabul edilmesi, diğer her türlü zararlı girdiyi engeller. Örneğin, kullanıcıdan gelen bir e-posta adresi girişi sadece e-posta formatında olmalı, JavaScript kodları veya HTML etiketleri engellenmelidir.
İçerik Güvenlik Politikası (CSP), XSS saldırılarını engellemenin en etkili yollarından biridir. CSP, tarayıcılara hangi kaynaklardan içerik alabileceğini bildirir. Bu sayede, sadece güvenli ve doğrulanan kaynaklardan gelen JavaScript kodlarının çalışmasına izin verilir.
# 3. Çift HTML Şifreleme
Web sayfasında kullanıcıdan alınan veriler doğrudan bir sayfaya yerleştiriliyorsa, bu verilerin HTML ile şifrelenmesi gerekir. Bu sayede, zararlı kodların tarayıcı tarafından çalıştırılması engellenmiş olur.
Çerezlerinizi (cookies) güvenli hale getirmek de XSS saldırılarına karşı korunma açısından önemlidir. Özellikle `HttpOnly` ve `Secure` flag'leri kullanarak çerezlerinizin yalnızca güvenli bağlantılardan (HTTPS) gönderilmesini ve JavaScript tarafından erişilememesini sağlayabilirsiniz.
XSS İçin Bir Örnek
```html
```
Eğer bu formda kullanıcılar yalnızca metin girmeli, ancak site bu girdiyi kontrol etmeden doğrudan başka kullanıcılara gösteriyorsa, saldırgan şunu yazabilir:
```html
```
Bu kod, yorum kısmına eklendikten sonra diğer kullanıcılar yorumları okurken bu JavaScript kodu çalıştırılabilir.
Bu tür bir açığı engellemek için, kullanıcının yazdığı tüm yorumlar temizlenmeli ve sadece güvenli içerikler kabul edilmelidir.