Lembro-me de ter visto uma maneira de fazer com <input type="password" />
que o navegador não solicite que o usuário salve a senha. Mas estou desenhando um branco. Existe um atributo HTML ou algum truque de JavaScript que fará isso?
Lembro-me de ter visto uma maneira de fazer com <input type="password" />
que o navegador não solicite que o usuário salve a senha. Mas estou desenhando um branco. Existe um atributo HTML ou algum truque de JavaScript que fará isso?
Respostas:
Tente usar autocomplete="off"
. Não tenho certeza se todos os navegadores são compatíveis. Documentos do MSDN aqui .
EDIT : Nota: a maioria dos navegadores abandonou o suporte para este atributo. Consulte O autocomplete = "off" é compatível com todos os navegadores modernos?
Isso é indiscutivelmente algo que deve ser deixado para o usuário, e não para o designer do site.
<input type="password" autocomplete="off" />
Gostaria apenas de acrescentar que, como usuário, acho isso muito chato e um incômodo de superar. Eu recomendo fortemente não usar isso, pois é mais do que provável que irrite seus usuários.
As senhas ainda não estão armazenadas no MRU e as máquinas públicas configuradas corretamente nem mesmo salvarão o nome de usuário.
Eu resolvi de outra maneira. Você pode tentar isso.
<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>
#outra maneira
<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>
// você precisa adicionar o atributo autocomplete = "off" ou você pode adicionar a classe .auto-complete-off na caixa de entrada e desfrutar
Exemplo:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
Tentei o seguinte e parece que funciona com qualquer navegador:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
Desta forma, é muito mais seguro do que utilizar técnicas de timeout, pois garante que o campo de entrada cederá a senha quando o usuário a focar.
Quanto às questões de segurança, aqui está o que um consultor de segurança dirá a você sobre toda a questão de campo (isto é de uma auditoria de segurança independente real):
Preenchimento automático de HTML ativado - Os campos de senha em formulários HTML têm o preenchimento automático ativado. A maioria dos navegadores tem a facilidade de lembrar as credenciais do usuário inseridas em formulários HTML.
Risco Relativo: Baixo
Sistemas / dispositivos afetados: o https: // * ** * *** /
Também concordo que isso deve abranger qualquer campo que contenha dados realmente privados. Acho que não há problema em forçar uma pessoa a sempre digitar suas informações de cartão de crédito, código CVC, senhas, nomes de usuário, etc, sempre que o site vai acessar qualquer coisa que deve ser mantida segura [universalmente ou por requisitos de conformidade legal]. Por exemplo: formulários de compra, sites de banco / crédito, sites de impostos, dados médicos, federal, nuclear, etc. - não sites como Stack Overflow ou Facebook.
Outros tipos de sites - por exemplo, TimeStar Online para entrar e sair do trabalho - é estúpido, já que eu sempre uso o mesmo PC / conta no trabalho, que não consigo salvar as credenciais nesse site - estranhamente eu consigo no meu Android mas não em um iPad. Mesmo os PCs compartilhados, isso não seria tão ruim, já que marcar o ponto de entrada / saída para outra pessoa realmente não faz nada além de irritar seu supervisor. (Eles têm que entrar e excluir os golpes errados - apenas escolha não salvar em PCs públicos).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Aqui está.
Aqui está a melhor resposta e a mais fácil! Coloque um campo de senha extra na frente do seu input
campo e defina o display:none
, de forma que quando o navegador preencher, ele o faça de uma forma input
que você não se importe.
Mude isso:
<input type="password" name="password" size="25" class="input" id="password" value="">
para isso:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
não funciona para mim (Chrome 61 OSX), mas funciona:<input type="password" style="position: absolute; top: -1000px;">
Leia também esta resposta, onde ele está usando essa solução fácil que funciona em qualquer lugar (veja também a correção para o Safari móvel):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
você também pode usá-lo como seguir
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
visto que autocomplete = off está obsoleto, sugiro uma solução mais recente.
Defina seu campo de senha para um campo de texto normal e mascare sua entrada com "discos" usando CSS. o código deve ser semelhante a este:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
Observe que isso pode não funcionar propriamente em navegadores firefox, e um walkaround adicional é necessário. Leia mais sobre isso aqui: https://stackoverflow.com/a/49304708/5477548 .
A solução foi retirada deste link , mas para cumprir o SO "no-hotlinks", eu a resumi aqui.
No caso da maioria dos navegadores principais, ter uma entrada fora de e não conectado a nenhum formulário engana o navegador fazendo-o pensar que não houve envio. Nesse caso, você teria que usar a validação JS pura para seu login e a criptografia de suas senhas também seria necessária.
Antes:
<form action="..."><input type="password"/></form>
Depois de:
<input type="password"/>
Descobri que o seguinte funciona no Firefox e no 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>
Todos eles estão na seção de formulários. "person" e "mypswd" são o que você quer, mas o navegador salvará "userid" e "passwd" uma vez, e nunca mais uma vez que eles não mudam. Você pode eliminar o campo "pessoa" se realmente não precisar dele. Nesse caso, tudo o que você quer é o campo "mypswd", que pode mudar de alguma forma conhecida pelo usuário de sua página da web.
A única maneira de fazer com que o firefox, o edge e o Internet explorer desliguem o preenchimento automático é adicionar autocomplete = "false" na minha declaração de formulário, como:
<form action="postingpage.php" autocomplete="false" method="post">
e tenho que adicionar autocomplete = "off" à entrada do meu formulário e alterar o tipo para texto como:
<input type="text" autocomplete="off">
Parece que esse código html precisa ser padronizado com os navegadores. o formulário type = password deve ser revisado para que substitua as configurações do navegador. O único problema que tenho é que perdi a máscara de entrada. Mas pelo lado bom, o irritante "este site não é seguro" não está aparecendo no Firefox.
para mim, não é grande coisa, uma vez que o usuário já está autenticado e é meu nome de usuário e senha de alteração dele