Siteler arası komut dosyası çalıştırma (XSS), saldırganların istemci kodunu kullanarak web sitelerine kötü amaçlı komut dosyaları eklemesine olanak tanıyan bir tür güvenlik açığıdır. Saldırganlar, kullanıcıları taklit etmek, hassas verilere erişmek ve hatta web sitesinin sayfa içeriğini değiştirmek için kullanabileceğinden önemli bir tehdit oluşturur.

O kadar tehlikeli ki, 2021'de en tehlikeli 25 zayıflığın ortak zayıflık sıralamasında ikinci sırada yer aldı. Bu, web siteleri oluşturuyorsanız, siteler arası komut dosyası çalıştırma ve bunun nasıl önleneceği hakkında bilgi sahibi olmanız gerektiği anlamına gelir.

Siteler Arası Komut Dosyası Nasıl Çalışır?

Siteler arası komut dosyası oluşturmanın nasıl çalıştığını anlamadan önce, aynı kaynak ilkesinin (SOP) ne anlama geldiğini bilmek önemlidir. SOP, bir web sitesinin (bir kaynak) başka bir web sitesine (farklı bir kaynak) okumasını veya yazmasını kısıtlayan bir güvenlik mekanizması politikasıdır. Kötü amaçlı web sitelerinin güvenilir web sitelerine kötü amaçlı kod göndermesini engeller.

instagram viewer

Siteler arası komut dosyası çalıştırma saldırıları, tarayıcının meşru HTML ile kötü amaçlı kod arasında ayrım yapamamasından yararlanarak bu politikayı atlamaya çalışır. Örneğin, bir saldırgan, hedef web sitesine JavaScript kodu enjekte edebilir. Tarayıcının kodu yürüttüğünü ve saldırganın oturum belirteçlerine, tanımlama bilgilerine ve diğer hassas verilere erişim elde ettiğini varsayalım.

üç türü vardır bilgisayar korsanlarının web sitelerini kırmak için kullandığı siteler arası komut dosyası: yansıtılan, depolanan ve DOM XSS.

Düğümde Siteler Arası Komut Dosyası Çalıştırma Nasıl Önlenir

Node.js'de siteler arası komut dosyası çalıştırmayı önlemek için atabileceğiniz bazı adımlar aşağıda verilmiştir.

Sanitize Girişi

Saldırganların bir XSS saldırısı gerçekleştirebilmesi için web uygulamanıza veri gönderebilmesi ve bir kullanıcıya gösterebilmesi gerekir. Bu nedenle, almanız gereken ilk önleyici tedbir, uygulamanızın kullanıcılarından aldığı tüm girdileri dezenfekte etmektir. Bu çok önemlidir, çünkü sunucu onu çalıştırmadan önce sahte verileri algılar. Bunu manuel olarak yapabilir veya aşağıdaki gibi bir araç kullanabilirsiniz. doğrulayıcı bu da süreci daha hızlı hale getirir.

Örneğin, doğrulayıcı Aşağıdaki gibi kullanıcı girişinde HTML etiketlerinden kaçmak için.

içe aktarmak doğrulayıcı itibaren "doğrulayıcı";
userInput = `Jane <komut dosyası yüklemesi="Alarm('XSS kesmek');"></script>`;
İzin Vermek sanitizedInput = validator.escape (userInput);

Yukarıdaki kodu çalıştıracak olsaydınız, sterilize edilmiş çıktı bu olurdu.

Jane &lt; komut dosyası yüklemesi=&alıntı; Alarm(&#x27;XSS hack'i&#x27;);&alıntı;&gt;&lt;&#x2F; senaryo&gt;

Kullanıcı Girişini Kısıtla

Bir kullanıcının doğrulama yoluyla formunuzda gönderebileceği girdi türünü sınırlayın. Örneğin, bir e-posta için bir giriş alanınız varsa, yalnızca e-posta biçiminde girişe izin verin. Bu şekilde, saldırganların kötü veri gönderme olasılığını en aza indirirsiniz. Bunun için validator paketini de kullanabilirsiniz.

Yalnızca HTTP Çerez Politikasını Uygulayın

Çerezler, verileri yerel bir önbellekte depolar ve HTTP aracılığıyla sunucuya geri gönderin. Ancak saldırganlar, tarayıcı aracılığıyla bunlara erişmek için JavaScript'i de kullanabilir, bu nedenle kolay hedeflerdir.

Yalnızca HTTP tanımlama bilgisi, istemci tarafı komut dosyalarının tanımlama bilgisi verilerine erişmesini engelleyen bir ilkedir. Bu, uygulamanız bir güvenlik açığı içerse ve bir saldırgan bunu istismar etse bile çereze erişemeyeceği anlamına gelir.

Node.js'de Express kullanarak yalnızca HTTP tanımlama bilgisi ilkesini nasıl uygulayabileceğinize ilişkin bir örnek:

uygulama.kullanmak(ifade etmek.oturum({
gizli: "gizli",
kurabiye: {
httpOnly: doğru,
güvenli: doğru
}
}))

Bir saldırgan çereze şu komutla erişmeye çalışırsa: httpOnly etiketi yukarıda gösterildiği gibi true olarak ayarlanırsa boş bir dize alırlar.

Siteler Arası Komut Dosyası Çalıştırma, Hackerlar için Kolay Bir Hedeftir

Uygulamanızın güvenliğini sağlamak çok önemli olmakla birlikte, onu uygulamak karmaşıklaşabilir. Bu gönderide, siteler arası komut dosyası çalıştırma saldırılarını ve bunları Node.js'de nasıl önleyebileceğinizi öğrendiniz. Saldırganlar, sunucunuza kötü amaçlı kod enjekte etmek için uygulamanızdaki güvenlik açıklarından yararlandığından, kullanıcı girişini her zaman temizlediğinizden emin olun. Bunu yaparak, uygulamanız onu saklamadan veya çalıştırmadan önce kötü amaçlı kodu kaldırırsınız.