2013-08-09 36 views
8

Tarayıcıda bir javascript değişkeninde bir kullanıcının şifresini tutmak, tarayıcı tabanlı bir istemcinin normal güvenlik açıklarını aşan herhangi bir güvenlik açığını ortaya çıkarır mı?Şifre değişkeni javascript değişkeninde - güvenlik sonuçları?

Basit bir örnek olarak bu kod parçasını göz önünde - sadece o kadar açık için saldırı mümkün olduğunca yapmak, şifre değişken geneldir ve sayfanın ömrü boyunca devam Bu örnekte jsfiddle here

<label for="password">Password</label> 
<input type="password" id="password"/><br/><br/> 
<button type="button" id="pwdButton">Store password in window.password</button> 

<script> 
    function getContentsOfPasswordField() { 
     return jQuery("input#password").val(); 
    } 

    jQuery("button#pwdButton").on("click", function() { 
     window.password = getContentsOfPasswordField(); 
     alert("'" + password + "' stored in global var window.password") 
    }); 
</script> 

ve en kötü senaryoyu ver. Belki de değişkenin kapsamını/ömrünü sınırlamak, onu belirli saldırı sınıflarından koruyabilir mi?

akla hemen gelen saldırı XSS, ama sonra müşteri ilk etapta XSS'e göre eğer saldırgan böylece değişken doesn içinde tutarak (this bakınız) zaten anahtar giriş yaparak şifreyi okuyabilir' Görebildiğim kadarıyla, XSS saldırılarına karşı savunmasızlığı arttır.

sorunun noktası gerçekten değil unutmayın olsun veya bu, bu bir değişkene şifreyi bırakılması istemci tarafı web uygulaması güvenliği :)

+2

Parola girildikten sonra parola giriş sayfasında "kalmayın". 1. İstemci makinesinde şifre okuma (tarayıcı hafızasını okuyarak) üzerinde diğer yazılımların bulunması, bu, müşterinin tarafında bir problemdir ve her zaman uygulanabilir. 2. Şifreyi okuyan herhangi bir tarayıcı uzantısının imkanı. 3. Aynı sayfa okuma şifresi üzerinde herhangi bir komut dosyası imkanı. –

+1

Ancak bu olası saldırılardan herhangi biri daha olasıdır çünkü şifre bir değişkende tutulur mu? Kötü amaçlı üçüncü taraf yazılımlar javascript VM'ye erişebiliyorsa - şifre girişine girildiğinde sadece keylog veya şifre okuyamaz mı? 'Window' üzerinde ayarlanan – davnicwil

+2

, istemcinin tarayıcısı tarafından uygulandığında dahili güvenlik (örn. Menşei için) engeller. Ayrıca, eğer evinizin penceresini açık bırakırsanız soyulabilirsin, ama bu da kapınızı açık bırakmanız gerektiği anlamına gelmez. –

cevap

1

hakkında temel bir soru daha kötü bir şekilde tecrübe edilmektedir yapmıyor Sadece tarayıcı araçlarına erişmek için insanlara açık bırakır! , mağaza şifresi düğmesine basıldığında çağrılan fonksiyonu söyler ve şifreyi şifre olarak adlandırılan bir değişkende saklar. Bu değişkenin daha sonra sayfada hiç kullanılmasa bile, basitçe kodun bir yerlerinde ele alınırsa, tek yapmanız gereken tarayıcılarındaki geliştirici araçlarını açmaktır, alert(password); ve Bam, şifre tam anlamıyla ön planda açılır.

Admitedly, birilerinin bunu yapmasına izin verecek kadar basit olan herhangi bir kod, muhtemelen web'de olmamaya değer, hatta daha az aldatılmaya değer, ama sanırım gerçekten ne kadar zalimce olduğumuza dair bir ders.

+0

true, ancak bu gerçekten bir ağ üzerindeki uzaktan saldırılarla ilgili bir sorudur. Kullanıcı + makinesinin oturum için fiziksel olarak güvenli olduğunu varsayıyordum! – davnicwil

+1

Bunu düşünmenin yanı sıra, bir saldırganın tarayıcıları parolaları veya oturum çerezlerini sakladığından daha fazla ekstra bir fırsat sağladığından, gerçekten sıradan bir şeyden başka bir şey yok. Tarayıcılarını fiziksel olarak güvende tutan kullanıcı, web uygulama geliştiricisinin kontrolünün ötesindedir. – davnicwil