Soru Kullanıcının Firebug / Chrome Dev Tools üzerinden şifre bulmasını engelle


Hidden Password

Pasaport giriş alanı için:

<input type="text" required="" tabindex="2" class="std_textbox" placeholder="Enter your account password." id="pass" name="pass">

Ne zaman <input type="password"> olarak değiştirildi <input type="text"> Şifre ortaya çıkıyor. Parolaları biriktiren veya Parola yöneticilerinden oluşturulan sistemlerde bu riskli olabilir.

Revealed Password

İstemci tarafı şifreleme burada kullanılabilir mi? Nasıl uygulanabilir?


20
2018-05-03 10:59


Menşei


Bir kullanıcının istediği zaman şifresini görmesini neden önlemek istediğini anladığımdan emin değilim. Kullanıcının şifresini kullanıcının kendisinden şifrelemenizi gerektiren bir kullanım durumu var mı? - Ely
Öneri için teşekkürler, ancak modern tarayıcılarda göz ardı ediliyor gibi görünüyor: stackoverflow.com/questions/3868299/... - Manoj Kumar
Belki de, kullanıcının web sitesinin şifresini almasına izin vermeden önce kullanıcının yerel şifresini girmesini istemek için şifre yöneticisinde bir şeyler yapılabilir. - Barmar
Noktalar sadece bir şifre girişi için karakterlerin grafiksel gösterimi, değeri ile manipüle edilebilir document.getElementById('pass').value de - bviale
@ManojKumar: Bu form doldurma veya şifre yöneticisi bilgisayara erişimi olan herkese şifreler veriyorsa, o zaman hiçbir şey yoktur - tekrar hiçbir şey değil - Web sitenizin buna karşı yapabileceği. Web siteniz bu saldırı vektörüne bile dahil değil. - Bergi


Cevaplar:


Daha önce de söylendiği gibi, bir giriş elemanında şifre olması, kullanıcının şifreyi kolayca göstermesine izin verecektir.

... VeElyasin sorarken, kullanım durumunun ne olduğunu bize bildirmelisiniz.

Kullanım durumunuz hakkında karanlığa düştüğünüzde, kullanıcıların bir ücret karşılığında abone olabileceği bir web siteniz olduğunu varsayalım ve abonelik ücretinizi ödemek üzere bir kişinin girişini paylaşan birden fazla kullanıcının istemesini istemezsiniz.

Bir kullanıcının sitenize abone olup olmadığını kontrol etmek için çerez kimlik doğrulamasını kullanabilirsiniz.

  1. Yeni bir kullanıcı abone olduğunda, web sitenizdeki özel bir kayıt sayfasına bağlantı içeren bir e-posta gönderin.

  2. Kullanıcı bu bağlantıyı izlediğinde, kullanıcının bilgisayarında geçerli bir abone olduğunu belirten bir çerez yerleştirin.

  3. Sitenizde bir açılış sayfası oluşturun. Bu açılış sayfası, çerezi kullanıcının bilgisayarından okuyacaktır ve gerçekten de geçerli bir abone olduklarını doğrulayacaktır.

  4. Sitenizdeki diğer tüm sayfalar, kullanıcılar bu çerezleri kullanmadıysa kullanıcıları açılış sayfasına yönlendirmelidir.

  5. Abone olmayan kullanıcılar açılış sayfasına yönlendirilebildiğinden, açılış sayfasında abone olmalarına izin verebilirsiniz.

  6. Abone olunan bir kullanıcının aboneliği sona erdiyse, siteyi tekrar ziyaret ettiğinde (şimdi abonelikten çıkarılan) kullanıcı bilgisayarındaki çerezi alırsınız. Abone olmayan herhangi bir kullanıcı gibi, onları açılış sayfasına yönlendirirsiniz.

Çerezlerin yakalanabileceği veya çalınabileceği doğru olsa da, genellikle kullanıcının rahatça kullanabilme kabiliyetinin ötesindedir.

Çerezleri kullanarak daha fazla güvenlik istiyorsanız, önce abone olduklarında bir kullanıcının IP adresini yakalayabilirsiniz. Daha sonra, kullanıcının hem geçerli bir çereze sahip olduğunu hem de orijinal olarak abone oldukları aynı IP adresinden eriştiğini doğrulayabilirsiniz. Tabii ki, bu, aboneliği sitenize erişmek için sadece orijinal IP adresini kullanma ile sınırlandırır.


2
2018-05-12 19:19





Kısa cevap: Maalesef önlenemez. Bunun nedeni, tüm istemci tarafı kodunun (JavaScript) istemcinin kendisi tarafından değiştirilebilmesidir; bu nedenle istemci tabanlı bir güvenlik sistemi savunmasız hale gelir.

Düşünebildiğim tek uygulanabilir çözüm, bir karma Ham parola yerine parola gösterimi. Bu (hash-bruteforce saldırılarını göz ardı ederseniz) ham şifreyi güvende tutacaktır.

Bir karma, orijinal metnin bir temsilidir ve geri alınamaz. Yani, orijinal karakter dizesi, yalnızca karma kullanılarak herhangi bir algoritma tarafından alınamaz. Karma 'örnekleri MD5 ve SHA'dır. Bu teknik, genellikle tarayıcıda parolaların saklandığı yönlendiricilerde kullanılır.

açıklama: Parolalarınızı asla düz metin olarak saklamayın ve önceden girilmiş parola tekniğini benimsemek istiyorsanız; sunucu tarafında karma ve / veya şifreleme oluşmalıdır.


17
2018-05-03 11:05



Gördüğünüz için üzücü, bunun işe yaramaz bir çözüm olduğuna inanıyorsunuz. Çalışmayacak. Hata ayıklayıcıda bir kesme noktası belirledim ve herhangi bir dikkat çekmeden önce değeri okudum. Bu uygulanabilir bir çözüm değil. Şifreleme veya karmalama, sunucu tarafında gerçekleşmelidir. - Ely
Anlamadığınızı görmek çok üzücü, yani karma sunucu tarafı oluşturuldu. - Eric
Bunu daha açık bir şekilde belirtebileceğini düşünüyorum. Belki de açıklığa kavuşturmak için cevabı düzenleyin. Sunucu tarafındaki parolalar her zaman şifrelenmiş biçimde saklanır. Gerçekten ne demek istediğini anlamıyorum. - Ely


Farklı cevaplarda çözümler gördüm. Hepsinde, şifreyi görmek daha zor, ancak birilerinin onu görmesini engellemez.

Not: İstemci tarafında JavaScript nesneleri manipüle edilebilir ve denetlenebilir. Diğer cevaplarda sunulan çözümlerde kolayca yapabilirdim   şifre bilgisine erişin.


Diğerleri de belirttiği gibi, kullanıcının görüntülemesini engelleyemezsiniz.   istemci tarafında geliştirici araçları kullanarak şifre.

Bir kullanım vakası düşünemedim ama sen bahsettin otomatik form doldurucusu ve Beni hatırla seçeneği.

Otomatik form doldurucusubildiğim kadarıyla ana şifre korumalı. Onlar olmalıdır; Güvenli bir şekilde açıp kapatamazsam bir tane kullanmazdım. Bu durumda, bir bilgisayarı paylaşma durumunda, çıkış yapmak benim sorumluluğumdur.

Beni hatırla Web siteleri tarafından sıklıkla tanıtılan seçenek, yalnızca kişisel bilgisayarınız olduğunda kullanılmalı ve cihazınızı başka bir kişiyle paylaşmayı beklemezsiniz. Kullanmayın veya hesabınızı başka birinin kullanmadığından emin olun. Yine, senin sorumluluğun.

Şimdi, böyle bir durumu önlemeye ihtiyaç duyuyorsunuz. saldırı. Tek yapabileceğim şu:

  1. Müşteri tarafında geçerli bir çözüm yoktur. Çözümünüz sunucu tarafında çalışmalıdır.
  2. Sunucu tarafında işlevi şifreleyebilir veya karma yapabilirsiniz. Bakınız bu soru daha fazla ayrıntı için. Bu cevabın geri kalanında bunu daha ayrıntılı tartışacağım. Her iki çözümü de tercih edebilirsiniz, ancak uygulama farklıdır.

Şifreleme kullanırsanız, her zaman şifresini çözebilirsiniz.

Bu, aşağıdaki senaryoda size yardımcı olabilir: Şifreyi daima şifreli tutun. Her zaman eşleşmeli. Ancak, kullanıcı şifresini değiştirmek istediğinde, açık bir metin olacaktır. Kullanıcı şifreli bir biçimde yazamaz. Bunu çözmek zorundasın. Çözümler var. Bunu aldığınızdan eminim.

Eğer kullanırsan (şifreli) hashingo zaman çatlamak çok zor. Şifresini çözemezsin.

Bu, aşağıdaki senaryoda size yardımcı olabilir: Sunucu yalnızca karma sürümü gönderir. Bu şekilde hiçbir saldırgan bu bilgiyi kullanamaz. Buna göre tasarlamanız gerekiyor, ama ben de bunu anladığınızı hayal ediyorum.

Bunu söyledikten sonra, gereksiniminiz için kabul edilebilir bir kullanım durumu görmüyorum.

Nedenini açıklayayım. Bir kullanıcının parolaları hatırlaması veya otomatik form doldurucusu kullanması durumunda bir saldırganın parolayı görmesini engellemek istersiniz. Bir saldırgan bir kullanıcının bilgisayarına erişebiliyorsa, sadece giriş yapabilir, neden parola görmeyi rahatsız edebilir?

Google veya Facebook gibi şirketlerin neden getirmediğinin bir nedeni var.   Kullanım durumunuz için bir çözüm. Başka bir yol gitti ve   artırılmış güvenlik için itin 2 faktörlü kimlik doğrulama

Eğer bunu kullanabilirsen yap. Sorunu tamamen çözmez, ancak güvenliği arttırmayı bekleyebilirsiniz. Özellikle bir saldırgan için daha zor.


8
2018-05-08 12:37





İstemci olduğu için bunu önlemek için gerçek bir yol yoktur. Bir güvenlik modeli açısından: müşteriye güvenemeyiz. Öte yandan, bununla birlikte, üçüncü taraf bir cihaz kullanılmadan bunun farklı şekilde uygulanmasının gerçek bir yolu yoktur.

Üçüncü tarafa ait bir aygıtın kimlik doğrulamasında yardımcı olma sorununu gidermeye istekliyseniz: Web sitesinin rastgele bir tohum oluşturup göstermesini sağlayın, cihazın tohum ve şifreyi bir karma oluşturmak için istemesini sağlayın ve siteyi kullanarak kimlik doğrulaması yapın. karma Elbette, bir web hata ayıklayıcısını kullanırsanız karma görünmeye devam eder, ancak en azından her oturum için karma farklılık göstereceğinden onu saklamak / okumakta hiçbir anlamı yoktur. Bu, bu arada, bu yöntem seçilen düz metin saldırısına eğilimli olduğu için de tamamen güvenli değildir.

Eğer tüm bu sorunlardan geçmeye istekliyseniz Kudos. Üçüncü taraf cihaz olarak bir akıllı telefon işlevine sahip olmak için bunun için bir uygulama yazabileceğini varsayalım.


4
2018-05-08 09:54



Bu aslında tarayıcıda çalışabilir. Parola değerini gerçekten saklamaksızın parolayı anında alabilirsiniz. Bununla birlikte, hashın tel üzerinden geçirilmesi problemine girersiniz, ki bu da düz metin şifresini geçmekten daha tehlikeli olabilir (sunucuda aynı karma işlevini kullanıyorsanız). O zaman bile, dediğiniz gibi, akıllı bir kişi kodu dev konsoldan değiştirebilir. - jedd.ahyoung


Kesinlikle hayır. Son kullanıcının işlem yapmasını engelleyemezsiniz. DOM Geliştirici araçları veya firebug.

Herhangi bir müşteri taraftarının kullanılması, kullanıcının bunu yapmasını engelleyemez. Veya   Tarayıcı kullanıcının bunu yapmasını kısıtlamadıkça.


3
2018-05-13 04:22





Karşılaştığınız sorunun, aynı bilgisayarı kullanan birden çok kişi olduğunu ve bir kullanıcının şifresini sitenize kaydettiğine inanıyorsa, aynı PC'de siteyi ziyaret eden herhangi biri, alanı şifreyi göstermek için kullanabilecektir.

Bunun olmasını önlemenin bir yolu, otomatik tamamlamayı devre dışı bırakmaktır. autocomplete="off" Bu kodu giriş elemanına yerleştirin ve şifre kaydedilse bile görünmemelidir. <input autocomplete="off" type="text" required="" tabindex="2" class="std_textbox" placeholder="Enter your account password." id="pass" name="pass"> 

Artıları 
Bilgisayarları paylaşan kullanıcılar ve parolaların çoğu için açığa çıkarılması konusunda endişelenmenize gerek yok.
Eksileri
Kullanıcılar şifrelerinin kaydedildiğini düşünebilir (ve yine de şifreleri kaydedebilirler) ancak sitenize geldiklerinde görünmeyecektir.
NOT Bu, kullanıcıların formu manipüle etmesini ve diğer kullanıcıların şifrelerini almasını engellemenin tam bir kanıtı değildir.

Bir yan not olarak, bir şifre ve kullanıcı adı girildikten sonra site yenilenmezse, web tarayıcısı şifreyi kaydetmeyi istemez. Örneğin, form göndermek yerine bir ajax çağrısı kullanarak.

Sayfa yüklenirken şifre alanı içindeki metni silmek için JavaScript'i kullanabilirsiniz. Sayfa, JavaScript ile aynı şekilde yüklendiğinde alanı daha iyi bir stil ekleyecektir: var x = document.createElement ("INPUT"); x.setAttribute ("type", "password");

Otomatik tamamlamaya bir alternatif = "kapalı" otomatik tamamlama alternatifi Arka uçtan bir isim oluşturmayı ve alan adı olarak kullanmayı içerir. Böylece, otomatik tamamlama, kullanıcılarınızın kaydedilen verileri nereye koyacağını asla bilmez


3
2018-05-13 14:37



Açıklama için teşekkürler ama autocomplete=off modern tarayıcılar tarafından göz ardı ediliyor gibi görünüyor: stackoverflow.com/questions/3868299/... - Manoj Kumar
Sayfa yüklenirken şifre alanı içindeki metni silmek için JavaScript'i kullanabilirsiniz. Sayfa, JavaScript’le benzer şekilde yüklendiğinde, daha iyi bir stil alanı ekleyecektir:var x = document.createElement("INPUT"); x.setAttribute("type", "password"); - Jacob Finamore
Otomatik tamamlama için bir alternatif buldum = "kapalı" otomatik tamamlama alternatifi Bu, arka uçtan bir isim oluşturmayı ve alanların adı olarak kullanmayı içerir; böylece otomatik tamamlama, kullanıcılarınızın kaydedilen verileri nereye koyacağını asla bilmeyecektir. - Jacob Finamore


Şu anki teknoloji ile mümkün değil. Diğerleri gibi, tüm istemci taraf kodlarını kontrol edebilir ve DOM'ı manipüle etmeye çalışabilirsiniz.

Diğer çözüm, banka benzeri giriş yapmaktır. Kullanıcı girişi her zaman şifre dizisi rasgele. Örneğin şifre uzunluğu 10 ise, kullanıcıya üç şifre alanı verin, örneğin şifre sırasını sorun. 3, 5, 10. Kullanıcı giriş yapmaya her girişinde bu değişecektir. Ve sunucu tarafında bunları karşılaştırırsınız.


3
2018-05-14 11:16





Not: Temel tarayıcı işlevselliğini bozacağı için bunu yapmaktan kaçınmalısınız.

Ama ısrar edersen, yapabilirsin. Daha güçlü Birisi başka bir giriş alanına yazarak ve parola alanını rastgele karakterlerle doldurarak parolayı açığa vurmak için.

Aşağıda bunu yapmanın bir yolu örneği verilmiştir. Unutmayın ki hiçbir şekilde önlemek Biri doğrudan istek gövdesinden şifre almaktan veya 'gizli' delege elemanınızı bulduktan sonra.

!function() {

    var passwordEl, delegateEl;

    function syncPassword() {
        passwordEl.value = 
            Array(delegateEl.value.length + 1).join('*');
    }

    function createDelegate() {
        delegateEl = document.createElement('input');
        delegateEl.style.position = 'absolute';
        delegateEl.style.top = '-9999px';

        delegateEl
            .addEventListener('keyup', syncPassword, false);

        document.body.appendChild(delegateEl);
    }

    window.addEventListener('load', function() {
        passwordEl = document.getElementById('passwordId');
        createDelegate();

        // steal the focus from the password input
        passwordEl.addEventListener('focus', function(e) {
            e.preventDefault();
            delegateEl.focus();
        }, false);

        syncPassword(); // clear if was auto completed

    }, false);
}();

Artık şifre girişinizi form gönderiminde doğru parola ile yeniden doldurma seçeneğiniz vardır veya sunucunuzun parolaların delege alanından gelmesini beklemesini sağlayın.

Eğer fantezi yaparsanız, temsilci alanı odaklandığında uygun stilleri şifre alanına ekleyebilir ve kullanıcıya şifre alanının kendisinde odaklanmış oldukları izlenimini verebilirsiniz.

Ama yapma.


2
2018-05-12 18:23