Modern tek sayfalık uygulamaların çoğunda, jetonu istemci tarafında bir yerde saklamamız gerekir (en yaygın kullanım durumu - bir sayfayı yeniledikten sonra kullanıcının oturum açmasını sağlamak için).
Toplam 2 seçenek vardır: Web Depolama (oturum depolama, yerel depolama) ve istemci tarafı çerezi. Her iki seçenek de yaygın olarak kullanılmaktadır, ancak bu çok güvenli oldukları anlamına gelmez.
Tom Abbott iyi özetlemektedir JWT sessionStorage ve localStorage güvenliğini :
Web Depolama'ya (localStorage / sessionStorage) aynı etki alanındaki JavaScript aracılığıyla erişilebilir. Bu, sitenizde çalışan herhangi bir JavaScript'in web depolama alanına erişebileceği ve bu nedenle siteler arası komut dosyası oluşturma (XSS) saldırılarına karşı savunmasız olabileceği anlamına gelir . Özetle XSS, bir saldırganın sayfanızda çalışacak JavaScript enjekte edebileceği bir tür güvenlik açığıdır. Temel XSS saldırıları, saldırganın <script>alert('You are Hacked');</script>
tarayıcı tarafından çalıştırılıp çalıştırılmadığını ve diğer kullanıcılar tarafından görüntülenip görüntülenemeyeceğini görmek için bir form içine koyduğu form girişleri aracılığıyla JavaScript enjekte etmeye çalışır.
XSS'yi önlemek için, ortak yanıt güvenilir olmayan tüm verilerden kaçmak ve kodlamaktır. React (çoğunlukla) bunu sizin için yapar! React'ın ne kadar XSS güvenlik açığı korumasından sorumlu olduğu hakkında harika bir tartışma .
Ancak bu, olası tüm güvenlik açıklarını kapsamaz! Diğer bir potansiyel tehdit, CDN'lerde veya dış altyapıda barındırılan JavaScript kullanımıdır .
İşte Tom yine:
Modern web uygulamaları, A / B testi, huni / pazar analizi ve reklamlar için 3. taraf JavaScript kitaplıklarını içerir. Diğer insanların kodlarını uygulamalarımıza aktarmak için Bower gibi paket yöneticilerini kullanıyoruz.
Kullandığınız komut dosyalarından yalnızca biri tehlikeye girerse ne olur? Kötü amaçlı JavaScript sayfaya gömülebilir ve Web Deposu tehlikeye atılır. Bu tür XSS saldırıları, herkesin sitenizi ziyaret eden Web Depolama Alanlarını bilgisi olmadan alabilir. Muhtemelen bir grup kuruluş, değerli bir şey depolamamanızı veya web depolama alanında herhangi bir bilgiye güvenmemeyi tavsiye eder. Bu, oturum tanımlayıcılarını ve belirteçlerini içerir.
Bu nedenle, bir depolama mekanizması olarak Web Depolama'nın aktarım sırasında herhangi bir güvenli standart uygulamadığı sonucuna varıyorum . Her kim Web Depolama'yı okur ve kullanırsa, JWT'yi her zaman HTTPS üzerinden göndermelerini ve asla HTTP göndermemelerini sağlamak için gereken özeni göstermelidir.