Pamiętam, że widziałem sposób, aby mieć <input type="password" />
taki, że przeglądarka nie monituje użytkownika o zapisanie hasła. Ale rysuję puste miejsce. Czy istnieje atrybut HTML lub jakaś sztuczka JavaScript, która to zrobi?
Pamiętam, że widziałem sposób, aby mieć <input type="password" />
taki, że przeglądarka nie monituje użytkownika o zapisanie hasła. Ale rysuję puste miejsce. Czy istnieje atrybut HTML lub jakaś sztuczka JavaScript, która to zrobi?
Odpowiedzi:
Spróbuj użyć autocomplete="off"
. Nie jestem jednak pewien, czy każda przeglądarka go obsługuje. Dokumentacja MSDN tutaj .
EDYCJA : Uwaga: większość przeglądarek zrezygnowała z obsługi tego atrybutu. Zobacz Czy funkcja autocomplete = "off" jest zgodna ze wszystkimi nowoczesnymi przeglądarkami?
Jest to prawdopodobnie coś, co powinno być pozostawione raczej użytkownikowi niż projektantowi strony internetowej.
<input type="password" autocomplete="off" />
Chciałbym tylko dodać, że jako użytkownik uważam, że jest to bardzo irytujące i kłopotliwe do przezwyciężenia. Zdecydowanie odradzam korzystanie z tego, ponieważ najprawdopodobniej pogorszy to twoich użytkowników.
Hasła nie są już przechowywane w MRU, a poprawnie skonfigurowane komputery publiczne nie zapiszą nawet nazwy użytkownika.
Rozwiązałem w inny sposób. Możesz tego spróbować.
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){
setTimeout(function(){
$("input#passfld").attr("type","password");
},10);
});
// or in pure javascript
window.onload=function(){
setTimeout(function(){
document.getElementById('passfld').type = 'password';
},10);
}
</script>
#Inny sposób
<script type="text/javascript">
function setAutoCompleteOFF(tm){
if(typeof tm =="undefined"){tm=10;}
try{
var inputs=$(".auto-complete-off,input[autocomplete=off]");
setTimeout(function(){
inputs.each(function(){
var old_value=$(this).attr("value");
var thisobj=$(this);
setTimeout(function(){
thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
thisobj.val(old_value);
},tm);
});
},tm);
}catch(e){}
}
$(function(){
setAutoCompleteOFF();
});
</script>
// musisz dodać atrybut autocomplete = "off" lub możesz dodać klasę .auto-complete-off do pola wprowadzania i ciesz się
Przykład:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
Wypróbowałem następujące i wygląda na to, że działa w każdej przeglądarce:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
W ten sposób jest o wiele bezpieczniejszy niż stosowanie technik limitu czasu, ponieważ gwarantuje, że pole wejściowe ulegnie hasłu, gdy użytkownik je ustawi.
Jeśli chodzi o kwestie bezpieczeństwa, oto co powie Ci konsultant ds. Bezpieczeństwa na temat całej sprawy (pochodzi z rzeczywistego niezależnego audytu bezpieczeństwa):
Włączone autouzupełnianie HTML - pola hasła w formularzach HTML mają włączone autouzupełnianie. Większość przeglądarek ma funkcję zapamiętywania danych logowania użytkownika wprowadzonych do formularzy HTML.
Ryzyko względne: niskie
Systemy / urządzenia, których dotyczy problem: o https: // * ** * *** /
Zgadzam się również, że powinno to obejmować każdą dziedzinę, która zawiera naprawdę prywatne dane. Uważam, że można zmusić osobę do wpisywania danych karty kredytowej, kodu CVC, haseł, nazw użytkowników itp. Za każdym razem, gdy witryna ma uzyskać dostęp do wszystkiego, co powinno być zabezpieczone [ogólnie lub zgodnie z wymogami prawnymi]. Na przykład: formularze zakupu, strony bankowe / kredytowe, strony podatkowe, dane medyczne, federalne, nuklearne itp. - a nie witryny takie jak Stack Overflow lub Facebook.
Inne typy witryn - np. TimeStar Online do rejestracji czasu pracy i poza nią - to głupie, ponieważ zawsze używam tego samego komputera / konta w pracy, że nie mogę zapisać poświadczeń na tej stronie - o dziwo mogę na moim Androidzie ale nie na iPadzie. Nawet współdzielone komputery nie byłyby takie złe, ponieważ rejestrowanie wejścia / wyjścia dla kogoś innego naprawdę nie robi nic poza irytacją twojego przełożonego. (Muszą wejść i usunąć błędne uderzenia - po prostu nie chcą zapisywać na publicznych komputerach).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Proszę bardzo.
Oto najlepsza i najłatwiejsza odpowiedź! Umieść dodatkowe pole hasła przed swoim input
polem i ustaw je display:none
tak, aby gdy przeglądarka je wypełniła, input
zrobiła to w miejscu, na którym Cię nie obchodzi.
Zmień to:
<input type="password" name="password" size="25" class="input" id="password" value="">
do tego:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
mnie nie działa (Chrome 61 OSX), ale to działa:<input type="password" style="position: absolute; top: -1000px;">
Przeczytaj także tę odpowiedź, w której używa tego łatwego rozwiązania, które działa wszędzie (zobacz także poprawkę dla mobilnej przeglądarki Safari):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
Możesz użyć JQuery, wybierz element według identyfikatora:
$("input#Password").attr("autocomplete","off");
Lub wybierz element według typu:
$("input[type='password']").attr("autocomplete","off");
Lub też:
Możesz użyć czystego Javascript:
document.getElementById('Password').autocomplete = 'off';
możesz go również używać jak obserwowanie
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
ponieważ autocomplete = off jest przestarzałe, sugeruję nowsze rozwiązanie.
Ustaw swoje hasło na zwykłe pole tekstowe i zamaskuj wprowadzone dane za pomocą „dysków” za pomocą CSS. kod powinien wyglądać następująco:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
Należy pamiętać, że może to nie działać poprawnie w przeglądarkach Firefox i potrzebne jest dodatkowe obejście. Przeczytaj więcej na ten temat tutaj: https://stackoverflow.com/a/49304708/5477548 .
Rozwiązanie zostało zaczerpnięte z tego łącza , ale aby zachować zgodność z SO „no-hotlinks”, podsumowałem je tutaj.
W przypadku większości głównych przeglądarek dane wejściowe poza formularzami i niepołączone z nimi w jakikolwiek sposób oszukują przeglądarkę do myślenia, że nie było przesłania. W takim przypadku do logowania musiałbyś użyć czystej walidacji JS, a szyfrowanie haseł byłoby również konieczne.
Przed:
<form action="..."><input type="password"/></form>
Po:
<input type="password"/>
Znalazłem następujące prace w przeglądarce Firefox i Chrome.
<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>
Wszystko to znajduje się w sekcji formularzy. „person” i „mypswd” są tym, czego chcesz, ale przeglądarka zapisze „userid” i „passwd” raz i nigdy więcej, ponieważ nie zmieniają się. Możesz wyeliminować pole „osoba”, jeśli naprawdę go nie potrzebujesz. W takim przypadku wszystko, czego potrzebujesz, to pole „mypswd”, które może się zmienić w pewien sposób znany użytkownikowi Twojej strony internetowej.
Jedynym sposobem, w jaki mogę wyłączyć autouzupełnianie w programach Firefox, Edge i Internet Explorer, jest dodanie autocomplete = "false" w moim oświadczeniu formularza, na przykład:
<form action="postingpage.php" autocomplete="false" method="post">
i muszę dodać autocomplete = "off" do mojego formularza i zmienić typ na tekst, na przykład:
<input type="text" autocomplete="off">
Wygląda na to, że ten kod html wymaga standaryzacji w przeglądarkach. Formularz typ = hasło należy zmienić, tak aby zastępował ustawienia przeglądarki. Jedyny problem, jaki mam, to utrata maskowania wprowadzania. Ale z drugiej strony irytujące „ta witryna nie jest bezpieczna” nie pojawia się w przeglądarce Firefox.
dla mnie to nie jest wielka sprawa, ponieważ użytkownik jest już uwierzytelniony, a jego część dotycząca zmiany nazwy użytkownika i hasła