XSS Saldırılarına Karşı JavaScript Kodlama Örnekleri

XSS Saldırılarına Karşı JavaScript Kodlama Örnekleri

Bu makalede, XSS saldırılarına karşı JavaScript kodlama örnekleri sunuyoruz Bu örneklerle, web sitenizi güvenli tutmak için önemli adımlar atabilirsiniz XSS saldırılarına karşı nasıl korunabileceğinizi öğrenmek için hemen okumaya başlayın!

XSS Saldırılarına Karşı JavaScript Kodlama Örnekleri

XSS, bir web uygulamasının güvenlik açıkları sonucu ortaya çıkan bir saldırı türüdür. Bu saldırılar sayesinde, web sayfasına erişenlerin tarayıcılarında kötü niyetli kodlar çalıştırılabilir. Bu durum, kişisel veya hassas verilerin çalınmasına, dolandırıcılık faaliyetlerine neden olabilir. Bu nedenle, web uygulamalarının geliştirilmesi sırasında XSS saldırılarına karşı önlemler alınmalıdır.

JavaScript kodlama, web uygulamalarının geliştirilmesi sırasında XSS saldırılarından korunmak için kullanılan en yaygın yöntemlerden biridir. Bu yöntemler, kullanıcı verilerinin güvenli bir şekilde işlenmesini ve kötü niyetli kodların kod bloklarına enjekte edilmesinin önlenmesini sağlayarak web uygulamalarının daha güvenli olmasını sağlar. Bu yazıda, XSS saldırılarının çeşitleri ve her çeşidi için JavaScript kodlama örnekleri verilerek bu yöntem hakkında daha fazla bilgi edilebilir.


XSS Nedir?

XSS (Cross-Site Scripting) saldırısı, web uygulamalarının güvenlik açıklarından yararlanarak, site kullanıcılarının verilerinin zararlı kodlarla kötü amaçlı kişiler tarafından manipüle edilmesidir. Bu nedenle XSS saldırıları, web uygulamaları için büyük bir güvenlik tehdidi oluşturmaktadır. XSS saldırıları sadece kullanıcılara değil, web uygulamasının sahibi olan kuruluşlara da zarar verebilir.

Bir XSS saldırısı, bir kullanıcının siteye yüklediği verilerin, bu verileri işleyen uygulama tarafından doğru bir şekilde doğrulanmaması sonucunda gerçekleşebilir. Saldırganlar, bu açıklardan yararlanarak, zararlı kodları web sitesindeki diğer kullanıcılara veri olarak sunabilirler. Bu yolla saldırganlar, kullanıcıların verilerini toplayıp, siteyi çökertebilirler. Bu nedenle, XSS saldırılarına karşı önlem almak web uygulamaları geliştiricileri için önemlidir.


XSS Saldırıları Çeşitleri

XSS (Cross-Site Scripting) saldırıları, web uygulamalarında kullanıcı bilgilerinin hedef alınarak yapılan saldırı türlerinden biridir. XSS saldırılarının üç farklı çeşidi bulunmaktadır. Bunlar Reflective XSS, Stored XSS ve DOM-based XSS olarak adlandırılır.

Reflected XSS saldırısı, kullanıcının yolladığı verilerin sunucu tarafından geri döndürülmesiyle gerçekleşir. Bu çeşit saldırıda, kullanıcının bilgilendirildiği bir sayfada aktif hale gelen zararlı kodlar bulunur.

Stored XSS saldırısı, zararlı kodların sunucuda depolanarak tüm kullanıcılara servis edilmesiyle gerçekleşir. Bu tür saldırılarda, kullanıcı bilgileri sunucuda saklanarak tekrar tekrar kullanılabilir.

DOM-based XSS saldırısı ise tarayıcı tarafından işlenen bir XSS saldırısıdır. Bu tür saldırılar, JavaScript kodları tarafından oluşturulan URL'lerin ve parametrelerin kullanıldığı senaryolarda gerçekleşir.

XSS saldırılarından korunmak için, her çeşit saldırıya karşı farklı yöntemler kullanılmalıdır. Bu yöntemler arasında veri girişlerinin doğrulanması, inputlarda JavaScript etiketlerinin kullanımının engellenmesi, veri girişlerinin filtrelenmesi gibi tedbirler alınabilir.


Reflected XSS

Reflected XSS saldırısı, kullanıcının yollamış olduğu verilerin sunucu tarafından geri döndürülmesiyle ortaya çıkmaktadır. Bu tür saldırılar, genellikle arama kutuları, form inputları, yorum kutuları gibi alanlar üzerinden gerçekleştirilir. Saldırgan, bu alana JavaScript kodları ekleyebilir ve bu kodlar sunucu tarafından geri döndürüldüğünde tüm kullanıcılara ulaşabilir.

Bu tür saldırılardan korunmak için alınabilecek önlemler arasında veri girişlerinin doğrulanması, inputlardaki JavaScript etiketlerinin kullanımının engellenmesi, kod filtreleme teknikleri gibi adımlar yer alabilir. Ayrıca, JavaScript kodlama örnekleri kullanarak bu tür saldırılardan korunmak da mümkündür. Reflected XSS saldırıları için JavaScript kodlaması yaparak inputlardaki zararlı kodları filtrelemek, kodlara karşı tedbir almak ve kullanıcı girdilerini kontrol etmek önemlidir.


Reflected XSS Örnek Kodları

Reflected XSS, kullanıcının yolladığı verilerin sunucu tarafından geri döndürülmesiyle gerçekleşir. Bu saldırı türünde, zararlı kodlar input kutusuna girilir ve sunucudan geri dönen sayfada çalıştırılır. Reflected XSS saldırılarına karşı JavaScript kodlama örnekleriyle korunmak mümkündür.

Bunun için, şu JavaScript kodlaması yapılabilir:

Kodlama Yöntemi Kod Örneği
HTML Entity Kodlaması <script>alert('Merhaba Dunya!')</script>
JavaScript Kodlaması document.write('<script>alert("Merhaba Dunya!")</script>');

Reflected XSS saldırılarından korunmak için veri girişlerinin doğrulanması ve inputlarda JavaScript etiketlerinin kullanımının engellenmesi gibi tedbirler alınmalıdır.


Reflected XSS Korunma Yöntemleri

Web uygulamalarında Reflected XSS saldırılarından korunmak için bazı korunma yöntemleri mevcuttur. Bunlar şunlardır:

  • Veri girişlerinin doğrulanması: Kullanıcı girişlerinin veritabanı sorgularının doğrusal olmadığından emin olmak için veri girişlerinin doğrulanması gereklidir.
  • Inputlarda JavaScript etiketlerinin kullanımının engellenmesi: Web uygulamasında kullanıcının inputlarına JavaScript etiketlerini kullanarak zararlı kodlar göndermesini önlemek için inputlarda JavaScript etiketlerinin kullanımı engellenmelidir.
  • HTTPOnly cookies kullanımı: HTTPOnly cookies, JavaScript tarafından erişilmesi engellenebilir, bu nedenle bu tür cookies'ler kullanılırsa saldırganlar tarafından çalınması engellenebilir.
  • XSS filtrelerinin kullanımı: Edinilen verileri filtrelemek ve zararlı içeriği engellemek için XSS filtrelerinin kullanılması önemlidir.

Bu korunma yöntemleri ile Reflected XSS saldırılarından daha korunaklı hale gelebilir.


Stored XSS

Stored XSS saldırıları, bir web uygulamasında kullanılan input veya form gibi öğeler aracılığıyla gönderilen zararlı kodların sunucuda depolanmasıyla gerçekleşir. Bu tür saldırıların en büyük özelliği, bir kez gerçekleştirildiğinde tüm kullanıcılara servis edilebilmesidir. Stored XSS saldırıları, Reflected XSS saldırılarına göre daha tehlikeli kabul edilir.

Zararlı kodlar, kullanıcı verileri arasında gömülü olarak sunucuya gönderilir ve sunucuda depolanır. Bu kodlar daha sonra sunucudan alınan web sayfalarında çalıştırılır ve kullanıcılara gösterilir. Bu sayede, her kullanıcı bu zararlı kodlarla karşı karşıya kalır ve etkilenir.

Bu tür saldırılardan korunmak için, veri girişleri kontrol edilerek filtrelenmeli ve doğrulama işlemleri yapılmalıdır. Ayrıca, inputlarda potansiyel güvenlik riski oluşturacak JavaScript etiketleri kontrol altına alınmalıdır. Yani, input kutularına sadece belirli karakter ve değerler girilmesine izin verilmelidir. Böylece, zararlı kodların sunucuda depolanması engellenerek Stored XSS saldırılarından korunmak mümkün olabilir.


Stored XSS Örnekleri

Stored XSS saldırısı, zararlı kodların bir form veya yorum kutusu gibi kullanıcı tarafından girdiği veriler aracılığıyla sunucuda depolanması sonucunda gerçekleşir. Kullanıcılara sunulan sayfalarda, zararlı kodlar saklanan verilerle birlikte çalıştırılır ve kullanıcıların tarayıcılarında yürütülür. Bu nedenle, bir kez saklanan zararlı kodlar, birçok kullanıcıya doğrudan veya dolaylı olarak zarar verebilir.

Bunun bir örneği, bir forum sitesinde kullanıcı yorumlarını gösteren bir sayfada gerçekleşebilir. Bir saldırgan, yorum kutusuna zararlı kodlar ekleyerek formu gönderir. Bu yorum sunucuda depolanır ve foruma giren her kullanıcı tarafından görüntülenebilir. Yorumlar bir önbelleğe alındığından, saldırganın zararlı kodlarını bellekten temizlemek neredeyse imkansızdır ve sayfa açıldığında zararlı kod çalışmaya devam eder.

Stored XSS Saldırısı Örneği Korunma Yöntemi
Yorum kutusuna eklenen JavaScript kodu Veri depolaması sırasında filtreleme yapmak ve girdileri doğrulamak
Bir formda saklanan zararlı kod Server side validation kullanarak zararlı kodların engellenmesi

Stored XSS saldırılarından korunmak için veri depolaması sırasında filtreleme yapmak, girdileri doğrulamak ve server side validation kullanmak gerekir. Veri girişlerinin filtrelenmesi, uygunsuz karakterlerin girişinin engellenmesi ve HTML, CSS ve JavaScript etiketlerinin inputlarda kullanımını kontrol altına almak dahil birçok teknik kullanılabilir. Veri doğrulama, boş veya uygunsuz girdilerin engellenmesine yardımcı olur ve sunucu tarafından yürütülen kontroller ile yapılan doğrulama işlemi tamamlanmalıdır.


Stored XSS Korunma Yöntemleri

Stored XSS saldırılarından korunmak için ilk adım, kullanıcı girişlerinin doğrulanması ve filtrelenmesidir. Bu sayede zararlı kodların sunucuya gönderilmesi önlenir. Veri girişleri doğrulanırken, özel karakterlerin engellenmesi, inputların boyutunun sınırlandırılması gibi önlemler alınmalıdır.

Inputlarda JavaScript etiketlerinin kullanımı potansiyel bir güvenlik riski oluşturur. Bu nedenle, güvenli bir web uygulaması geliştirmek için JavaScript etiketleri kontrollü bir şekilde kullanılmalıdır. Inputlarda JavaScript kodlarının etkisiz hale getirilmesi veya kısıtlanması gibi önlemler alınarak XSS saldırılarından korunmak mümkündür.

Web uygulamalarının geliştirilmesinde kullanılan teknolojilere göre güvenlik standartları sürekli güncellenmektedir. XSS saldırılarından korunmak için güncel güvenlik standartları dikkate alınmalı ve uygulanmalıdır.

Stored XSS saldırıları, verilerin sunucuda depolanması nedeniyle gerçekleşir. Bu nedenle, veri depolama işlemi konusunda hassas davranmak önemlidir. Verilerin sterilize edilmesi ve sadece gerekli olan verilerin depolanması gibi tedbirler alınarak XSS saldırılarından korunmak mümkündür.

Sonuç OlarakStored XSS saldırılarından korunmak için veri girişlerinin filtrelenmesi, JavaScript etiketlerinin kontrollü kullanımı, güncel güvenlik standartlarına uymak ve veri depolama konusunda hassas davranmak gibi önlemler alınmalıdır. Bu sayede web uygulamaları güvenli hale getirilebilir ve kullanıcı bilgilerinin güvenliği sağlanabilir.


DOM-based XSS

DOM-based XSS saldırısı, kullanıcı tarafından girilen verilerin sayfa içindeki JavaScript kodu tarafından işlenmesi sonucu gerçekleşir. Bu saldırı türünün diğerlerinden farkı, sunucu tarafında bir güvenlik açığı olmamasıdır ve dolayısıyla saldırganların direkt olarak tarayıcıyı hedef almasıdır.

DOM-based XSS'in gerçekleşmesi için, kullanıcının tarayıcıda açtığı sayfadaki JavaScript kodu, kullanıcı tarafından sağlanan verileri işlemektedir. Burada kullanıcının sağladığı verilerin kod içinde nasıl kullanıldığı önemlidir ve eğer güvenli bir şekilde işlenmezlerse, kullanıcıların tarayıcılarında arka planda zararlı bir kod çalıştırılabilir.

Bu saldırı türünden korunmak için, JavaScript kodlarının URL parametrelerini doğru şekilde işlemesi gerekmektedir. Tarayıcı tarafından işlenecek veriler kesinlikle önce kontrol edilmeli ve sterilize edilmelidir. Ayrıca kullanıcı girdileriyle oluşturulan URL'lerin güvenliği kontrol edilmeli ve herhangi bir güvenlik açığı varsa giderilmelidir.


DOM-based XSS Örnekleri

DOM-based XSS saldırıları, web uygulamasının aktif JavaScript kodlarını kullanarak oluşan tarih, masaüstü arayüzü renkleri ve hatta tarayıcının pencere boyutu gibi bileşenleri değiştiren JavaScript kodlarına dayanır. Bu değişiklikler, DNS rebinding, etiketleri ve tarayıcı dosyalarını da manipüle ederek, kullanıcının bilgisayarını ele geçiren zararlı kodlar olarak kullanılabilir.

DOM tabanlı XSS saldırılarına karşı koymak için, güvenilir bir iç kaynaklara ve güncel tarayıcılar kullanarak, yalnızca güvenli sayfalar açılması önemlidir. Ayrıca, kodu yazan bir kişinin aracı siteye bağlı olduğu sürece kodun kendi tarayıcısı tarafından yürütüldüğü bulgusal bir senaryo veya reklam, ihtiyatla işlem görmelidir.


DOM-based XSS Korunma Yöntemleri

DOM-based XSS saldırılarından korunmak için önemli adımlar atılmalıdır. Bu saldırılarda zararlı kodlar tarayıcı tarafından çalıştırılır ve bu nedenle güvenliği sağlamak için JavaScript kodlama standartlarına uygun şekilde URL işlemleri ve input kontrolleri yapılmalıdır. JavaScript kodlama, veri filtreleme, doğrulama işlemlerinde özenli bir şekilde uygulanmalıdır.

URL işlemleri yapılırken öncelikle URL içerisindeki parametrelerin steril edilmesi gerekmektedir. Bu işlem sırasında encodeURI() fonksiyonu kullanılabilir. Ayrıca, parametrelerin doğrulanması da önemlidir. Bu işlem, verify() fonksiyonları ile gerçekleştirilebilir.

Input kontrolleri, veri filtreleme işlemleri ile yapılabilir. Kullanıcı tarafından girilen verilerin kontrol edilmesi ve güvenli bir şekilde kullanılabilmesi için kontrollü karakter kodlama teknikleri kullanılmalıdır. Bu işlem sırasında encodeURIComponent() fonksiyonu kullanılabilir.

Ayrıca, JavaScript kodlama yazarken, satır sonlarına dikkat edilmesi gerekmektedir. Satır sonları, bazı durumlarda saldırganlar tarafından kullanılarak zaafiyet yaratılabilir. Bu nedenle, kodlama yapılırken satır sonlarının kontrol edilmesi, korunma önlemleri alınması gerekmektedir.


JavaScript Kodlama Örnekleri

XSS saldırılarından korunmanın bir yolu da JavaScript kodlama örnekleridir. Kodlar aracılığıyla, verilerin doğru bir şekilde filtrelenmesi ve güvenli bir şekilde işlenmesi sağlanabilir.

Örneğin, kontrollü karakter kodlaması yaparak veri girişlerinin doğruluğu kontrol edilebilir. encodeURI() ve encodeURIComponent() fonksiyonları sayesinde kullanıcı girdileri güvenli bir şekilde kullanılabilir. Güvende başvuru formu örneği ise veri girişlerine kontrol fonksiyonları eklenerek saldırılardan korunmayı sağlayabilir.

Bunun yanı sıra, ifade/dörtlü kodlama örneği kullanarak da saldırılardan korunmak mümkündür. Bu örnekte kullanıcı girdileri doyasıya kullanılmak yerine, kodlama yapılarak güvenlik sağlanır. Tüm bu yöntemler, JavaScript kodlama örnekleri ile kullanılabilir.


Kontrollü Karakter Kodlaması

Kontrollü karakter kodlaması, XSS saldırılarından korunmak için kullanılabilecek bir yöntemdir. Bu yöntem, kullanıcı girişlerinde yer alan belirli karakterleri kontrol altında tutarak, potansiyel güvenlik risklerini minimize etmektedir.

encodeURI() ve encodeURIComponent() fonksiyonları, bu amaçla kullanılabilecek örnekler arasında yer almaktadır. encodeURI() fonksiyonu, bir URL'de kullanılan karakterlerin kodlanmasında kullanılırken, encodeURIComponent() fonksiyonu ise, daha geniş bir kullanım alanı olan, kullanıcı girdilerinin kodlanmasında kullanılır.

Fonksiyon İsmi Amacı
encodeURI() Bir URL'deki karakterlerin kodlanmasında kullanılır
encodeURIComponent() Kullanıcı girdilerinin kodlanmasında kullanılır

Bu fonksiyonlar, kontrol edilemeyen karakterlerin kodlanmasını sağlayarak, XSS saldırılarına karşı koruma sağlarlar. Genellikle form verileri gibi kullanıcı girdilerinin alındığı durumlarda kullanılır ve bu sayede, potansiyel güvenlik riskleri engellenir.


Güvende Başvuru Formu Örneği

Güvende başvuru formu örneği, web uygulamalarında kullanıcı girdilerinin sterilize edilmesi ve doğrulanması için kontrol fonksiyonlarının kullanıldığı bir örnektir. Bu şekilde, XSS saldırılarından korunmak mümkün olur.

Bu örnekte, kullanıcıların ad, soyad, e-posta, telefon numarası gibi bilgileri girdiği bir başvuru formu kullanılmaktadır. Veri girişlerinin sterilize edilmesi için, öncelikle input alanlarının tipi belirtilir. Örneğin, telefon numarası alanı için "tel" tipi kullanılabilir.

Alan Adı Veri Tipi Kontrol Fonksiyonu
Ad Metin isAlpha()
Soyad Metin isAlpha()
E-posta E-posta isEmail()
Telefon Numarası Tel isNumeric()

Burada kullanılan kontrol fonksiyonları, ad ve soyad inputlarına sadece harf girilmesini; e-posta inputuna geçerli bir e-posta adresi girilmesini; telefon numarası inputuna sadece sayı girilmesini sağlar.

Bunun yanı sıra, input alanlarına girilen verilerin sterilize edilmesi de önemlidir. Bu işlem için htmlspecialchars() veya htmlentities() fonksiyonları kullanılabilir. Bu sayede, input alanlarına girilen özel karakterler ve HTML etiketleri sterilize edilerek, zararlı kodların gömülmesi engellenir.

Güvende başvuru formu örneğinde kullanılan bu yöntemler sayesinde, veri girişlerinin doğrulanması, kontrol edilmesi ve sterilize edilerek web uygulamaları XSS saldırılarına karşı daha korunaklı hale getirilir.


İfade/Dörtlü Kodlama Örneği

İfade/dörtlü kodlama örneği, XSS saldırılarına karşı kullanıcı girdilerinin kodlanması ve sayfada gösterilirken dekodlanması prensibine dayanmaktadır. Bu yöntemle, kullanıcı girdilerinin doğrudan sayfada kullanılmasına izin verilmez ve her zaman kodlanır ve dekodlanır. Bu sayede, XSS saldırılarından korunmak mümkündür.

Örneğin, kullanıcının bir input kutusuna girilen verilerin doğrudan sayfada gösterilmesi yerine, kodlandıktan sonra gösterilmesi gereklidir. Böylece, zararlı kodların çalışması engellenir. Bu amaçla, HTML özel karakterleri dörtlü kodlama yaparak kodlanabilir. İfade/dörtlü kodlama yöntemi, bu şekilde kullanıcı girdilerini korumak için oldukça etkilidir.

Girdi Kodlanmış Hali
<script>alert("XSS");</script>

Bu örnek göstermektedir ki kodlama yapılmadan önce, kullanıcı tarafından girilen bir kod doğrudan sayfada çalışacaktır. Ancak dörtlü kodlama kullanılarak yapılan kodlama sayesinde, kodun çalışması engellenmiştir.

İfade/dörtlü kodlama yöntemi, veri girişlerinin korunmasında etkili bir yöntem olsa da tek başına yeterli değildir. XSS saldırılarına karşı alınacak diğer tedbirleri de göz ardı etmeden kullanılmalıdır.