Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Yaygın olarak XSS olarak bilinen Siteler Arası Komut Dosyası Oluşturma, tarafından kullanılan en tehlikeli saldırı yöntemlerinden biridir. siber suçlular, bu nedenle her geliştiricinin ve güvenlik araştırmacısının bunun ne olduğunu ve nasıl yapılacağını bilmesi çok önemlidir. saldırıları önlemek. Peki, XSS güvenlik açığına karşı nasıl önlem alabilirsiniz? Bir web sitesinin kullanıcıdan aldığı verileri göstermek için HTML, JavaScript veya DOM kullanırsınız. Bu üç farklı alandan biri veya birkaçı birlikte çalışabilir.

HTML Kullanarak XSS Nasıl Engellenir?

XSS, saldırganların kötü amaçlı kodlar eklemesine izin verir veya siteyi ziyaret eden şüphelenmeyen kullanıcıları hedefleyen web sayfalarına komut dosyaları. Bu, kişisel verileri çalabilir, ziyaretçileri siber suçlu tarafından kurulan başka bir siteye yönlendirebilir veya başka bir şekilde web sayfasının görünümünü değiştirebilir. Ancak bunun olmasını engelleyebilirsiniz; örneğin, HTML eklemelerini durdurarak.

instagram viewer

Ziyaretçi defteri olan bir web siteniz olduğunu hayal edin. Diyelim ki bu ziyaretçi defterini kullanan ziyaretçileriniz buraya isimlerini ve mesajlarını yazabiliyor ve mesajları herkese açık olarak görüntülenebiliyor. Ziyaretçi defterinize XSS testi yapmak isteyen bir saldırgan, yazılacak mesaj için ayırdığınız alanı kullanacaktır. O siber suçlu burada bir JavaScript kodu çalıştıracak. Örneğin, bir saldırgan aşağıdaki gibi bir JavaScript kodu kullanabilir:

<senaryo>uyarı("XSS!")</script>

Saldırganın bunun başarılı olması için bir komut dosyası etiketi kullanması gerekir. Aksi takdirde, JavaScript kodu çalışmayacaktır. Kullanıcıların hiçbir zaman HTML etiketlerini kullanamaması için < ifadesini kodlamanız gerekir. Bu, saldırganın HTML etiketleriyle çalışmasını zorlaştıracaktır.

JavaScript Kullanarak XSS Nasıl Engellenir?

HTML'deki mantık aynı zamanda JavaScript'te geçerli. Bazı uygulamalarda, web sitesinin kullanıcıdan aldığı verileri bir JavaScript kodu ile yazdırmak mümkündür.

Bu kodlamayı göz önünde bulundurun:

<p kimliği="Yazdır"></P>
<senaryo>
Document.getElementById("Ölçek").içHTML = "";
</script>

Bir web sitesinin yukarıdaki gibi bir kod bloğu kullandığını düşünün. Geliştirici burada "print" adlı bir "p" etiketi kullanmıştır. Koddan da görebileceğiniz gibi "search" parametresinden bir değer gelecek ve geliştirici bu gelen değeri "p" etiketi içinde göstermek istiyor. Bu işlemi yapan geliştirici JavaScript'in innerHTML özelliğini kullanmak istemiştir.

Şimdi duruma siber saldırganın bakış açısından bakalım. Böyle bir durumda saldırgan "script" etiketi içerisinde bir XSS testi gerçekleştirecektir. Bunun için zaten kullanılmakta olan bir "script" etiketi olduğundan saldırganın etiketi yeniden başlatmasına gerek yoktur. Saldırgan daha sonra şöyle bir test yazabilir:

dosyaadı.php? arama=bir" uyarı("XSS!"); f= "

Bu kod web sitesinde şu şekilde görünecektir:

Document.getElementById("Ölçek").içHTML = " A" uyarı("XSS!"); f="";

Bu saldırı başarılı olacaktı. Sorunu daha iyi anlamak için, bir saldırganın kullanabileceği örnek bir tekniği daha inceleyelim. Bilgisayar korsanı, aşağıdaki gibi bir XSS testi uygulamış olabilir:

dosyaadı.php? arama=";</script><em>fatih</em>

Web sitesinden bakıldığında şöyle görünecekti:

Document.getElementById("Ölçek").içHTML = "";</script><em>fatih</em>";

Saldırgan burada "/script" gibi bir yapı kullanarak ilk "script" etiketini kapattığı için bu biraz garip gelebilir. Ve böylece, saldırgan istediği herhangi bir JavaScript ve HTML kodunu yeniden başlatabilir.

Bu iki farklı örneği düşündüğünüzde XSS'den korunmak oldukça basit görünüyor. Gerekli önlem, " Ve ' ilk örnekte gördüğünüz karakterler. İkinci örnekte, karakterleri kodlayın < Ve >.

DOM Kullanarak XSS Nasıl Engellenir?

XSS'nin bu varyantında, web sitesinin kullanıcıdan aldığı veriler bir DOM öğesinin özelliğine müdahale edebilir. Örneğin sitenin kullanıcıdan aldığı renk bilgisi bir tablonun arka plan rengini veya sayfanın tüm arka plan rengini etkileyebilir. Böylece kullanıcı farkında olmadan gövde ve tablonun stil düzenlerine müdahale eder. Aşağıdaki kod buna iyi bir örnektir:

<vücut rengi="<?php yankı $_GET['renk']; ?>"/>

Bununla web sitesi, "body" öğesinin "bgcolor" özelliğinde doğrudan kullanıcıdan aldığı "color" parametresini kullanır. Peki bir saldırgan bu noktada ne yapabilir? Bu kötü amaçlı kodu çalıştırabilirler:

dosyaadı.php? renk=kırmızı" aşırı yük="uyarı('XSS!')

Bu, web sitesinden görüntülendiğinde şöyle görünür:

<vücut rengi=" kırmızı" aşırı yük="uyarı('XSS!') "/>

Bunun olmasını önlemek için, geliştiricinin kodlaması gerekir. " karakter.

Ancak, JavaScript'te dikkat edilmesi gereken önemli bir öğe daha vardır. Aşağıdaki kod parçacığı buna bir örnektir:

<bir href="javascript: uyarı('XSS!')">

Bu, bazı JavaScript kodlarını doğrudan çalıştırmanın mümkün olduğu anlamına gelir. En iyi önleyici tedbirlerden biri, web sitesinin kullanıcılardan aldığı verilerin gerçek bir URL olup olmadığını kontrol etmesini sağlamaktır. En basit yöntem, "HTTP" gibi ifadelerin olduğundan emin olmaktır ve "HTTPS" (HTTP'nin güvenli sürümü) bağlantıda.

PHP ile XSS'yi Önlemek İçin Örnek Bir İşlev

Bir uygulamayı veya web sitesini XSS saldırılarından nasıl koruyacağınıza dair bazı örnekler gördünüz. Bu tablodaki kod parçacıklarını PHP ile kullanabilirsiniz:

HTML'de kodla

htmlözel karakterler($str, ENT_COMPAT)

JavaScript ve DOM özelliğinde kodlayın

htmlözel karakterler($str, ENT_NOQUOTES)

URL Kontrolü

'/^(((https?)|(\/\/))).*/';

Bunların sadece örnek olduğunu ve kullandığınız yazılım diline göre değişebileceğini unutmayın.

Yapabilirsiniz PHP ile bir web uygulaması oluşturun ve yukarıda gördüğünüz kodları metin olarak göndermeyi deneyin. Tüm bu yöntemlerin nasıl kullanılacağını merak ediyorsanız, aşağıdaki PHP kod bloğundan farklı bir dil kullanıyor olsanız bile faydalı olması gereken bazı fikirler edinebilirsiniz:

<?php
$veri = $_GET['veri'];

işlevin_attribute($str){
geri dönmek htmlözel karakterler($str, ENT_COMPAT);
// ENT_COMPAT çift tırnak (") karakterini kodlayacaktır.
}

işlevin_html($str){
$ bağlantı = '/^(((https?)|(\/\/))).*/';
eğer(!preg_match($bağlantı, $str))
{
geri dönmek "/";
}
geri dönmek $str;
}

$veri = in_attribute($veri);
$veri = in_html($veri);
$veri = real_url (veri);
?>

Web Sitenizi XSS ve Daha Fazlasından Koruyun

XSS, bilgisayar korsanları tarafından kullanılan popüler bir saldırı vektörüdür. Genellikle, URL'deki bir yol değeri, web sitenizde verilerin girilebileceği herhangi bir alan (formlar ve yorum alanları gibi), bir XSS güvenlik açığını test etmek için kullanılabilir. Ancak elbette siber suçluların bir siteye saldırmak için kullanabileceği pek çok farklı yöntem vardır, özellikle de çok sayıda kullanıcısı olan ve onların bilgilerini gizleyen bir web siteniz varsa.