Cross-Site Scripting (XSS) Nedir?
Web geliştirme dünyasında belki de en fazla karşılaşılan tehlikelerden biri olan XSS, kullanıcıların web uygulamalarına kötü amaçlı kod enjekte etmelerini sağlar. Bu tür saldırılar, web uygulamalarının kullanıcıların tarayıcılarında çalıştırabileceği zararlı JavaScript kodları eklenmesiyle gerçekleşir.
XSS Türleri
XSS saldırıları, aslında birkaç farklı türde olabilir. Bunlar, saldırıların nerede ve nasıl gerçekleştirildiğine göre değişiklik gösterir. Üç ana türden bahsedebiliriz:
Reflected XSS, saldırganın zararlı kodu kullanıcının gönderdiği veriler aracılığıyla bir web sayfasına yansıtarak gerçekleştirdiği bir saldırıdır. Örneğin, bir kullanıcı bir formu doldurup gönderdiğinde, formda girilen veri, sunucuya ulaşmadan doğrudan tarayıcıda çalıştırılabilir.
Örnek Senaryo:
Bir arama motorunun arama kutusuna zararlı JavaScript kodu yazdığınızda, arama sonuçları sayfası kullanıcıyı tuzağa düşürebilir. Kullanıcı arama sonuçlarına tıkladığında, JavaScript kodu çalıştırılır.
2. Stored XSS
Stored XSS, en tehlikeli XSS türlerinden biridir. Bu saldırıda zararlı kod, bir web uygulamasının veri tabanına kalıcı olarak kaydedilir. Web sayfası, zararlı kodu barındıran içerikleri kullanıcıya her gösterdiğinde, tarayıcıda bu kod çalıştırılır. Kullanıcı bir forumda ya da blogda mesaj yazarken, saldırgan bu mesajın içine zararlı kod enjekte edebilir.
Örnek Senaryo:
Bir forumda mesaj yazarken, bir saldırgan zararlı JavaScript kodu içeren bir mesaj gönderir. Bu mesajı okuyan her kullanıcı, kendi tarayıcısında saldırganın istediği işlemi gerçekleştiren bir script çalıştırır.
3. DOM-based XSS
Bu tür XSS saldırıları, sayfanın Document Object Model (DOM) yapısına müdahale eder. Bu saldırılarda zararlı kod, sunucuya gitmeden, sadece tarayıcıda çalışır. Bu tür saldırıların tespiti ve korunması oldukça zordur.
Örnek Senaryo:
Web sayfasında, bir JavaScript kodu kullanıcının tarayıcı tarafından işlenen URL parametrelerini alır ve doğrudan DOM'a yansıtarak çalıştırır. Bu, saldırganın zararlı kodu kullanıcının tarayıcısında çalıştırmasını sağlar.
XSS'e Karşı Nasıl Korunursunuz?
Peki, XSS'e karşı nasıl önlem alabilirsiniz? Web uygulamanızda güvenliği sağlamak için birkaç basit ama etkili yöntem mevcuttur. İşte bazı öneriler:
Kullanıcılardan gelen verileri her zaman doğrulayın ve filtreleyin. Kötü niyetli kodların sayfanızda çalışmasını engellemek için kullanıcıların girdiği her şeyi güvenli hale getirin.
# 2. HTML Yöneticisi Kullanın
HTML etiketlerinin tehlikeli olanlarını filtreleyerek, yalnızca güvenli etiketlerin sayfanızda yer almasını sağlayın. JavaScript kodunun çalışmaması için tüm tehlikeli etiketleri engelleyin.
CSP, tarayıcıya sadece güvenli kaynaklardan gelen içeriğin çalıştırılmasını söyleyen bir güvenlik önlemidir. Bu, saldırganların kötü amaçlı scriptleri çalıştırmalarını engeller.
# 4. HttpOnly ve Secure Flag Kullanın
Çerezlerinizi `HttpOnly` ve `Secure` bayraklarıyla işaretleyin. Bu, JavaScript’in çerezlere erişimini engeller ve sadece güvenli bağlantılarda (HTTPS) çerezlerin gönderilmesini sağlar.
XSS saldırılarında, bazı karakterler (örneğin `<` veya `>`) çift kez kodlanarak güvenli hale getirilebilir. Bu sayede saldırganların kodları uygulamanızda çalıştırmasını engellersiniz.