Відповіді:
Спробуйте використовувати autocomplete="off"
. Не впевнений, чи підтримує його кожен браузер. Документи MSDN тут .
EDIT : Примітка. Більшість браузерів припинили підтримку цього атрибута. Див. Чи сумісне автозаповнення = "вимкнено" з усіма сучасними браузерами?
Це, мабуть, щось, що слід залишати за користувачем, а не дизайнером веб-сайтів.
<input type="password" autocomplete="off" />
Я просто хотів би додати, що, як користувач, я думаю, що це дуже дратує і клопоту подолати. Я настійно рекомендую не використовувати це, оскільки це більш ніж ймовірно погіршить ваших користувачів.
Паролі вже не зберігаються в MRU, а правильно налаштовані загальнодоступні машини навіть не збережуть ім’я користувача.
Я вирішив іншим способом. Ви можете спробувати це.
<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>
#Інший спосіб
<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>
// вам потрібно додати атрибут autocomplete = "off" або ви можете додати клас .auto-complete-off у поле введення та насолоджуватися
Приклад:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
Я спробував таке, і, здається, це працює для будь-якого браузера:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
Цей спосіб набагато безпечніший, ніж використання методів таймауту, оскільки він гарантує, що поле введення введеться до пароля, коли користувач фокусує його.
Що стосується питань безпеки, ось що вам розповість консультант з безпеки у всьому польовому питанні (це фактично незалежний аудит безпеки):
Увімкнено автоматичне заповнення HTML - у полях паролів у формах HTML увімкнено автоматичне заповнення. Більшість браузерів мають можливість запам’ятовувати облікові дані користувачів, введені у форми HTML.
Відносний ризик: низький
Уражені системи / пристрої: o https: // * ** * *** /
Я також погоджуюся, що це повинно охоплювати будь-яке поле, яке містить справді приватні дані. Я вважаю, що цілком можна змусити людину завжди вводити інформацію про свою кредитну карту, CVC-код, паролі, імена користувачів тощо, коли цей веб-сайт має доступ до всього, що повинно бути захищеним [універсально або відповідно до вимог законодавства]. Наприклад: форми покупки, банківські / кредитні сайти, податкові сайти, медичні дані, федеральні, ядерні тощо - не такі сайти, як Stack Overflow або Facebook.
Інші типи сайтів - наприклад, TimeStar Online для роботи та поза роботою - це нерозумно, оскільки я завжди використовую один і той же ПК / акаунт на роботі, що я не можу зберігати облікові дані на цьому сайті - як не дивно, я можу на своєму Android але не на iPad. Навіть на спільних ПК це не було б дуже погано, оскільки введення / вихід для когось іншого насправді нічого не робить, але дратує вашого керівника. (Вони повинні зайти і видалити помилкові удари - просто вибирайте, щоб не економити на публічних ПК).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Ось ви йдете.
Ось найкраща відповідь і найпростіша! Поставте додаткове поле пароля перед вашим input
полем і встановіть display:none
, щоб, коли браузер його заповнював, він input
робив це в тому, що вас не хвилює.
Змініть це:
<input type="password" name="password" size="25" class="input" id="password" value="">
до цього:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
не працює для мене (Chrome 61 OSX), але це робить:<input type="password" style="position: absolute; top: -1000px;">
Прочитайте також цю відповідь, де він використовує це просте рішення, яке працює скрізь (див. Також виправлення для мобільного телефону Safari):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
Ви можете використовувати JQuery, вибрати елемент за ідентифікатором:
$("input#Password").attr("autocomplete","off");
Або виберіть предмет за типом:
$("input[type='password']").attr("autocomplete","off");
Або також:
Ви можете використовувати чистий Javascript:
document.getElementById('Password').autocomplete = 'off';
Ви також можете використовувати його як наступне
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
розглядаючи як застаріле автозаповнення = вимкнено , я пропоную більш сучасне рішення.
Встановіть поле для пароля у звичайне текстове поле та маскуйте свої дані "дисками" за допомогою CSS. код повинен виглядати так:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
Зверніть увагу, що це може не працювати належним чином у веб-переглядачах Firefox, і потрібен додатковий прохід. Детальніше про це читайте тут: https://stackoverflow.com/a/49304708/5477548 .
Рішення було взято за цим посиланням , але, щоб відповідати SO "no-hotlinks", я узагальнив його тут.
У випадку більшості основних веб-переглядачів, які не мають жодного входу і не підключаються до будь-яких форм, що спонукає браузер думати, подання не було. У цьому випадку вам також доведеться використовувати чисту перевірку JS для свого входу та шифрування ваших паролів.
Перед:
<form action="..."><input type="password"/></form>
Після:
<input type="password"/>
Я знайшов наступні роботи на Firefox та 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>
Все це знаходиться у розділі форм. "person" і "mypswd" - це те, що ви хочете, але браузер збереже "userid" і "passwd" один раз, і ніколи більше, оскільки вони не змінюються. Ви можете усунути поле "людина", якщо воно вам справді не потрібне. У цьому випадку все, що вам потрібно, - це поле "mypswd", яке може змінитись певним чином, відомим користувачеві вашої веб-сторінки.
Єдиний спосіб я можу отримати Firefox, edge та Internet Explorer вимкнути автозаповнення - додати autocomplete = "false" до моєї заяви типу:
<form action="postingpage.php" autocomplete="false" method="post">
і я повинен додати autocomplete = "off" до мого вводу форми та змінити тип на текст Like:
<input type="text" autocomplete="off">
Здається, що цей html-код потрібно стандартизувати з браузерами. тип форми = пароль слід переглянути, щоб він змінив налаштування браузера. Єдине питання, що у мене є, я втратив маскування вхідних даних. Але з точки зору прикрого "цей сайт не захищений" не з'являється у Firefox.
для мене це не велика справа, оскільки користувач вже автентифікований і його ім'я користувача та частина його пароля змінити