React JS’den kısaca bahsetmek gerekirse bildiğiniz üzere kullanıcı arabirimleri oluşturmak için ücretsiz açık kaynaklı bir front-end javascript kitaplığıdır. JSX (syntax) sözdizimini kullandığı bir HTML sayfasının içine javascript kodlarını enjekte etmek için kullanılan iyi yapılandırılmış bir çerçevedir.
Web tabanlı saldırılar, front-end tarafında açıklar yakalayarak sisteme sızmaya çalışmaktadır. Günümüzün sartan saldırı tekniklerine karşı React Js geliştiricileri nelere dikkat etmeli, bunlara bir göz atmaya çalışalım.
React Uygulamalarına Yönelik Tehditler
Cross-Site Scripting (XSS)
XSS, istemci taraflı bir güvenlik açığıdır. Bir Hacker, programınıza geçerli olarak yorumlanan ve uygulamanın bir parçası olarak yürütülen bazı kötü amaçlı kodlar ekleyebilir. Bu, uygulamanın işlevselliğini ve kullanıcı verilerini tehlikeye atar. Bu da uygulamanın işlevselliğini ve kullanıcı verilerini tehlikeye atar. XSS atakları, Reflected ve Stored olmak üzere ikiye ayrılır.
Reflected XSS – Saldırgan, sayfa içeriğine, tanımlama bilgilerine ve diğer önemli kullanıcı verilerine erişmek ve bunları değiştirmek için tarayıcının işlediği bazı JS kodlarıyla birlikte kötü amaçlı bir bağlantı kullanır.
Stored XSS – Bu saldırıda, kötü amaçlı içerik bir sunucuda depolanır ve bir kullanıcı depolanan verileri istediğinde yürütülür.
textContent ve HTML olmayan attribute’ler için köşeli parantez (curly braces) {} kullanmak XSS saldırılarına karşı otomatik olarak koruma sağlayacaktır.
Örneğin,
<form action={data}>
kullanmak yerine,
<div>{data}</div>
kullanılmalıdır.
SQL Enjeksiyonu
Tüm geliştiricilerin korkulu rüyası olan SQL Injection, uygulanın veritabanını açığa çıkarır. Saldırgan, verileri izinsiz olarak düzenlemelerine izin veren zararlı SQL kodu enjekte eder.
Bilgisayar korsanı, uygulamanızın tüm verilerine erişebilir, sahte kimlikler oluşturabilir ve hatta yönetici ayrıcalıklarını kontrol edebilir.
Broken Authentication
React.js uygulamalarında sık karşılaşılan diğer bir sorun da yetersiz veya zayıf yetkilendirmedir. Bu, saldırganların kullanıcı kimlik bilgilerini ele geçirmesine ve kaba kuvvet saldırıları gerçekleştirmesine neden olabilir.
Oturum kimliklerinin URL’lerde açığa çıkması, kolay ve tahmin edilebilir oturum açma ayrıntılarının saldırganlar tarafından keşfedilmesi, kimlik bilgilerinin şifrelenmemiş iletimi, oturum kapatıldıktan sonra devam eden geçerli oturumlar ve oturumla ilgili diğer faktörler gibi bozuk yetkilendirmeyle ilişkili çeşitli riskler vardır.
XML External Entity Attack (XXE)
XXE saldırısı, XML ayrıştırıcılarla hedeflenen bir saldırı türüdür. XXE, gizli verilerin ifşasına yol açabilecek zayıf yapılandırılmış bir XML ayrıştırıcı ile işlendiğinde meydana gelir.
Zip Slip
Zip Slip, saldırganların sisteme rastgele dosyalar yazmasına izin vererek uzaktan komut yürütülmesine neden olan bir arşiv çıkarma güvenlik açığıdır.
Hassas verileri seri hale getirmeyin
Genellikle uygulamamızın başlangıç durumunu JSON değerleri ile ayarlarız. Bu durumda, JSON.stringify() savunmasız olmasına rağmen herhangi bir veriyi bir dizgeye dönüştüren bir fonksiyondur. Böylece bir saldırgana, geçerli verileri değiştirebilen kötü amaçlı bir JS nesnesi enjekte etme özgürlüğü verir.
Dikkat edilmesi gerekenler;
Tehlikeli kitaplıklardan kaçının
Bu kitaplık kodu genellikle HTML’yi doğrudan DOM’a eklemek gibi tehlikeli işlemleri gerçekleştirmek için kullanılır. Bu nedenle, innerHTML, tehlikeli şekilde SetInnerHTML veya doğrulanmamış URL’ler kullanan kitaplıklardan kaçının. Ayrıca Linters’ı, React’in güvenlik mekanizmalarının güvenli olmayan kullanımını tespit edecek şekilde yapılandırın.
React’in güvenlik açığı bulunan sürümlerinden uzak durun
React, ilk sürümünde şimdikinden farklı olarak birkaç yüksek güvenlik açığına sahipti. Bu nedenle, tepki ve tepki-dom’un savunmasız sürümlerinin kullanılmasını önlemek için tepki sürümünüzü güncel tutmak daha iyidir. Bağımlılık güvenlik açıklarını doğrulamak için npm denetim komutunu kullanın.
Son olarak kesinlikle WAF dediğimiz Web Tabanlı Güvenlik Duvarı kullanılmalıdır. WAF sunucuları kurma ve geliştirme imkanı yok ise bulut WAF sistemlerinden kesinlikle yararlanılması gerekmektedir.