Hayır, şifre güvenliğini artırmak için tarayıcı JavaScript'i kullanmanın bir yolu yoktur. Bu makaleyi okumanızı şiddetle tavsiye ederim . Sizin durumunuzda en büyük sorun, tavuk yumurtası sorunudur:
Javascript kriptografisini iletirken "tavuk yumurtası sorunu" nedir?
Ağın bir parola vereceğine güvenmiyorsanız veya daha kötüsü, sunucuya kullanıcı sırlarını saklamaması için güvenmiyorsanız, güvenlik kodunu teslim etmeleri için onlara güvenemezsiniz. Siz kriptoyu tanıtmadan önce şifreleri koklayan veya günlükleri okuyan aynı saldırgan, siz yaptıktan sonra kripto kodunu ele geçiriyor.
[...]
Javascript şifreleme kodunu iletmek için neden TLS / SSL kullanamıyorum?
Yapabilirsin. Göründüğünden daha zor, ancak JavaScript kriptoyu SSL kullanarak bir tarayıcıya güvenli bir şekilde aktarıyorsunuz. Sorun şu ki, SSL ile güvenli bir kanal kurduğunuzda, artık Javascript kriptografisine ihtiyacınız yok; "gerçek" kriptografiniz var.
Bu da buna yol açar:
Javascript'te kripto kodu çalıştırmanın sorunu, kripto'nun bağlı olduğu herhangi bir işlevin, barındırma sayfasını oluşturmak için kullanılan herhangi bir içerik parçası tarafından sessizce geçersiz kılınabilmesidir. Kripto güvenliği, sürecin başlarında (sahte rastgele sayılar oluşturarak veya algoritmalar tarafından kullanılan sabitler ve parametrelerle oynayarak) veya daha sonra (anahtar materyalini bir saldırgana geri döndürerek) veya --- en olası senaryoda geri alınabilir --- kriptoyu tamamen atlayarak.
Herhangi bir Javascript kodu parçasının yürütme ortamını doğrulamanın güvenilir bir yolu yoktur. Javascript kripto kodu "Gerçekten rastgele bir sayı oluşturucusuyla mı yoksa bir saldırgan tarafından sağlanan birinin bir kopyasıyla mı uğraşıyorum?" Diye soramaz. Ve kesinlikle "bu kripto sırrı ile benim, yazarın onayladığı yollar dışında kimsenin bir şey yapmasına izin verilmez" diyemez. Bunlar genellikle kripto kullanan diğer ortamlarda sağlanan iki özelliktir ve bunlar Javascript'te imkansızdır.
Temelde sorun şudur:
- Müşterileriniz sunucularınıza güvenmediğinden ekstra güvenlik kodu eklemek isterler.
- Bu güvenlik kodu sunucularınız (güvenmedikleri) tarafından teslim edilir.
Veya alternatif olarak,
- Müşterileriniz SSL'ye güvenmiyor, bu yüzden ekstra güvenlik kodu kullanmanızı istiyorlar.
- Bu güvenlik kodu SSL aracılığıyla teslim edilir.
Not: Ayrıca, SHA-256 bunun için uygun değildir, çünkü tuzsuz, yinelenmemiş şifreleri zorlamak çok kolaydır . Yine de bunu yapmaya karar verirseniz, bir bcrypt , scrypt veya PBKDF2 uygulaması arayın .