Тип ввода = пароль, не позволяйте браузеру запомнить пароль - PullRequest
95 голосов
/ 22 января 2009

Я помню, как нашел способ <input type="password" />, чтобы браузер не предлагал пользователю сохранить пароль. Но я рисую пробел. Есть ли атрибут HTML или какой-то трюк JavaScript, который сделает это?

Ответы [ 13 ]

119 голосов
/ 22 января 2009

Попробуйте использовать autocomplete="off". Не уверен, что каждый браузер его поддерживает. Документы MSDN здесь .

РЕДАКТИРОВАТЬ : Примечание. Большинство браузеров отказались от поддержки этого атрибута. См. Совместимо ли autocomplete = "off" со всеми современными браузерами?

Возможно, это то, что должно быть оставлено на усмотрение пользователя, а не дизайнера веб-сайта.

60 голосов
/ 22 января 2009

<input type="password" autocomplete="off" />

Я просто хотел бы добавить, что, как пользователь, я думаю, это очень раздражает и мешает преодолеть. Я настоятельно рекомендую не использовать это, поскольку это, скорее всего, усугубит ваших пользователей.

Пароли уже не хранятся в MRU, и правильно настроенные общедоступные машины даже не сохранят имя пользователя.

12 голосов
/ 30 сентября 2014

Я решил по-другому. Вы можете попробовать это.

<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"  />
5 голосов
/ 10 марта 2016

Я попробовал следующее, и кажется, что работает для любого браузера:

<input id="passfld" type="text" autocomplete="off" />

<script type="text/javascript">
    $(function(){  
        var passElem = $("input#passfld");
        passElem.focus(function() { 
            passElem.prop("type", "password");                                             
        });
    });
</script>

Этот способ намного безопаснее, чем использование методов тайм-аута, потому что он гарантирует, что поле ввода уступит паролю, когда пользователь сфокусирует его.

5 голосов
/ 23 мая 2012

Что касается вопросов безопасности, вот что консультант по безопасности расскажет вам по всей проблеме на месте (это из фактического независимого аудита безопасности):

Автозаполнение HTML включено - в полях пароля в формах HTML включено автозаполнение. В большинстве браузеров есть возможность запоминать учетные данные пользователей, введенные в формы HTML.

Относительный риск: низкий

Затрагиваемые системы / устройства: о https://*******/

Я также согласен, что это должно охватывать любое поле , которое содержит действительно личные данные. Я чувствую, что можно заставить человека всегда вводить информацию о своей кредитной карте, код CVC, пароли, имена пользователей и т. Д. Всякий раз, когда этот сайт собирается получить доступ к чему-либо, что должно быть защищено [универсально или в соответствии с требованиями законодательства). Например: формы покупки, банковские / кредитные сайты, налоговые сайты, медицинские данные, федеральные, ядерные и т. Д. - не Сайты, такие как Stack Overflow или Facebook.

Другие типы сайтов - например, TimeStar Online для включения и выключения работы - это глупо, так как я всегда использую один и тот же ПК / учетную запись на работе, что я не могу сохранить учетные данные на этом сайте - как ни странно, я могу на моем Android, но не на iPad. Даже для компьютеров с общим доступом это было бы не так уж и плохо, потому что тактирование для кого-то другого на самом деле не делает ничего, кроме как раздражает вашего руководителя. (Они должны войти и удалить ошибочные удары - просто не сохранять на общедоступных ПК).

4 голосов
/ 27 августа 2016

Вот самый лучший и самый простой ответ! Поместите дополнительное поле пароля перед полем 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="">
2 голосов
/ 01 ноября 2017

Читайте также этот ответ , где он использует это простое решение, которое работает везде (см. Также исправление для Safari mobile):

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
2 голосов
/ 06 апреля 2012

Вы можете использовать JQuery, выбрать элемент по id:

$("input#Password").attr("autocomplete","off");

Или выберите товар по типу:

$("input[type='password']").attr("autocomplete","off");

Или также:

Вы можете использовать чистый Javascript:

document.getElementById('Password').autocomplete = 'off';
1 голос
/ 04 июля 2014

вы также можете использовать его как следующие

$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
0 голосов
/ 10 сентября 2018
<input type="password" placeholder="Enter New Password" autocomplete="new-password">

Вот, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...