Uma das alegrias de trabalhar para uma agência de saúde do governo é ter que lidar com toda a paranóia de lidar com PHI (Informações Protegidas de Saúde). Não me interpretem mal, sou a favor de fazer todo o possível para proteger as informações pessoais das pessoas (saúde, finanças, hábitos de surf etc.), mas às vezes as pessoas ficam um pouco nervosas.
Caso em questão: um de nossos clientes estaduais descobriu recentemente que o navegador fornece o recurso útil para salvar sua senha. Todos sabemos que ele já existe há algum tempo e é completamente opcional e cabe ao usuário final decidir se é ou não uma decisão inteligente usar ou não. No entanto, há um alvoroço no momento e estamos sendo solicitados a encontrar uma maneira de desativar essa funcionalidade para o nosso site.
Pergunta : Existe uma maneira de um site dizer ao navegador para não se lembrar de senhas? Estive em desenvolvimento web há muito tempo, mas não sei que já me deparei com isso antes.
Qualquer ajuda é apreciada.
fonte
Respostas:
Não tenho certeza se funcionará em todos os navegadores, mas você deve tentar definir o preenchimento automático = "desativado" no formulário.
Algumas pesquisas menores mostram que isso funciona no IE, mas não deixarei garantias;)
@ Joseph : Se for um requisito estrito passar a validação XHTML com a marcação real (não sei por que isso seria), teoricamente você poderia adicionar esse atributo com javascript posteriormente, mas usuários com js desativado (provavelmente uma quantidade negligenciável de sua base de usuários ou zero se o site exigir js) ainda terá suas senhas salvas.
Exemplo com jQuery:
fonte
autocomplete="off"
pelosinput type="password"
campos. msdn.microsoft.com/pt-br/library/ie/ms533486%28v=vs.85%29.aspxpara as entradas que você não quer que eles se lembrem de dados do formulário (
username
,password
, etc.) como mostrado abaixo:Testado nas versões mais recentes dos principais navegadores, ou seja
Google Chrome
,Mozilla Firefox
,Microsoft Edge
, etc, e funciona como um encanto. Espero que isto ajude.fonte
Eu estava lutando com esse problema há um tempo, com uma reviravolta única no problema. Usuários privilegiados não poderiam ter as senhas salvas para eles, mas usuários normais precisavam disso. Isso significava que usuários privilegiados precisavam fazer login duas vezes, a segunda vez sem impor senhas salvas.
Com esse requisito, o
autocomplete="off"
método padrão não funciona em todos os navegadores, porque a senha pode ter sido salva no primeiro login. Um colega encontrou uma solução para substituir o campo de senha quando ele era focado por um novo campo de senha e depois focar no novo campo de senha (depois conecte o mesmo manipulador de eventos). Isso funcionou (exceto que causou um loop infinito no IE6). Talvez houvesse uma maneira de contornar isso, mas estava me causando uma enxaqueca.Por fim, tentei apenas ter o nome de usuário e a senha fora do formulário. Para minha surpresa, isso funcionou! Ele funcionou no IE6 e nas versões atuais do Firefox e Chrome no Linux. Não testei mais, mas suspeito que funcione na maioria dos navegadores, se não em todos (mas não me surpreenderia se houvesse um navegador lá fora que não se importasse se não houvesse forma).
Aqui está um exemplo de código, juntamente com alguns jQuery para fazê-lo funcionar:
fonte
Bem, é um post muito antigo, mas ainda vou dar a minha solução, que minha equipe estava tentando alcançar há muito tempo. Acabamos de adicionar um novo campo type = "password" dentro do formulário e agrupá-lo em div e ocultá-lo. Verifique se essa div está antes da entrada da senha real. Isso funcionou para nós e não deu nenhuma opção Salvar senha
Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview
HTML:
CSS:
fonte
Você pode impedir que o navegador corresponda aos formulários aleatoriamente o nome usado para o campo de senha em cada programa. Em seguida, o navegador vê uma senha para o mesmo URL, mas não pode ter certeza de que é a mesma senha . Talvez esteja controlando outra coisa.
Atualização: observe que isso deve ser um acréscimo ao uso do preenchimento automático ou de outras táticas, não um substituto para elas, pelos motivos indicados por outras pessoas.
Observe também que isso impedirá que o navegador preencha automaticamente a senha. Isso não impedirá que ela armazene a senha em qualquer nível de segurança arbitrária que o navegador opte por usar.
fonte
Use autenticação de dois fatores real para evitar a única dependência de senhas que podem ser armazenadas em muito mais lugares do que o cache do navegador do usuário.
fonte
A maneira mais limpa é usar
autocomplete="off"
atributo tag, mas o Firefox não o obedece corretamente quando você alterna os campos com Tab.A única maneira de impedir isso é adicionar um campo falso de senha oculta, que engana o navegador para preencher a senha lá.
É um truque feio, porque você altera o comportamento do navegador, o que deve ser considerado uma má prática. Use-o apenas se você realmente precisar.
Nota: isso efetivamente interromperá o preenchimento automático de senhas, porque o FF "salvará" o valor de
#prevent_autofill
(que está vazio) e tentará preencher todas as senhas salvas lá, pois sempre usa a primeiratype="password"
entrada encontrada no DOM após o respectivo "nome de usuário" entrada.fonte
Eu testei que adicionar autocomplete = "off" na tag de formulário em todos os principais navegadores. De fato, a maioria das pessoas nos EUA usa o IE8 até agora.
Atualizado em 11 de junho de 2014
Finalmente, abaixo está uma solução de navegador cruzado usando javascript e está funcionando bem em todos os navegadores.
Precisa remover a tag "form" no formulário de login. Após a validação do lado do cliente, coloque essas credenciais em formato oculto e envie-as.
Além disso, adicione dois métodos. um para a validação "validateLogin ()" e outro para ouvir o evento enter enquanto clica em enter na caixa de texto / senha / botão "checkAndSubmit ()". porque agora o formulário de login não tem uma tag de formulário, digite o evento que não está funcionando aqui.
HTML
Javascript
Boa sorte!!!
fonte
Na verdade, não - a única coisa que você poderia fazer realisticamente é oferecer conselhos no site; talvez, antes da primeira vez em que você faça login, você possa mostrar a eles um formulário com informações indicando que não é recomendado que eles permitam que o navegador armazene a senha.
Em seguida, o usuário seguirá imediatamente o conselho, anote a senha em um post-it e cole-a no monitor.
fonte
O que tenho feito é uma combinação de preenchimento automático = "desativado" e limpeza de campos de senha usando um javascript / jQuery.
Exemplo de jQuery:
Ao usar,
setTimeout()
você pode esperar o navegador preencher o campo antes de limpá-lo, caso contrário, o navegador sempre será preenchido automaticamente depois que você limpar o campo.fonte
se autocomplete = "off" não estiver funcionando ... remova a tag do formulário e use uma tag div, depois passe os valores do formulário usando jquery para o servidor. Isso funcionou para mim.
fonte
Como o preenchimento automático = "desativado" não funciona nos campos de senha, é necessário contar com o javascript. Aqui está uma solução simples com base nas respostas encontradas aqui.
Adicione o atributo data-password-autocomplete = "off" ao seu campo de senha:
Inclua o seguinte JS:
Esta solução funciona para Chrome e FF.
fonte
Para que as pessoas percebam - o atributo 'preenchimento automático' funciona na maioria das vezes, mas os usuários avançados podem contorná-lo usando um bookmarklet.
O fato de o navegador salvar suas senhas aumenta a proteção contra o registro de chaves, portanto, a opção mais segura é salvar senhas no navegador, mas protegê-las com uma senha mestra (pelo menos no Firefox).
fonte
Eu tenho uma solução alternativa, que pode ajudar.
Você pode fazer um hack de fonte personalizado. Portanto, crie uma fonte personalizada, com todos os caracteres como um ponto / círculo / estrela, por exemplo. Use isso como uma fonte personalizada para o seu site. Veja como fazer isso no inkscape: como criar sua própria fonte
Em seu formulário de logon, use:
Em seguida, adicione seu css:
Compatível com vários navegadores. Eu tentei o IE6 +, FF, Safari e Chrome. Apenas certifique-se de que a fonte oet que você converte não seja corrompida. Espero que ajude?
fonte
A maneira mais simples de resolver esse problema é colocar os campos INPUT fora da marca FORM e adicionar dois campos ocultos dentro da marca FORM. Em seguida, em um ouvinte de evento de envio antes que os dados do formulário sejam enviados aos valores de cópia do servidor da entrada visível para os invisíveis.
Aqui está um exemplo (você não pode executá-lo aqui, pois a ação do formulário não está definida como um script de login real):
fonte
Minha solução js (jquery) é alterar o tipo de entrada da senha para o texto no envio do formulário . A senha pode ficar visível por um segundo, então eu também ocultei a entrada antes disso. Prefiro não usar isso para formulários de login , mas é útil (junto com autocomplete = "off"), por exemplo, na parte administrativa do site.
Tente colocar isso dentro de um console (com jquery) antes de enviar o formulário.
Testado no Chrome 44.0.2403.157 (64 bits).
fonte
Eu testei muitas soluções. Nome do campo da senha dinâmica, vários campos da senha (invisíveis para os falsos), alterando o tipo de entrada de "texto" para "senha", preenchimento automático = "desativado", preenchimento automático = "nova senha", ... mas nada o resolveu recentemente navegador.
Para se livrar da senha, lembrei-me finalmente de tratá-la como campo de entrada e "desfocar" o texto digitado.
É menos "seguro" que um campo de senha nativa, pois a seleção do texto digitado o mostraria como texto não criptografado, mas a senha não é lembrada. Também depende da ativação do Javascript.
Você estimará o risco de usar a opção abaixo da proposta vs lembrar a senha do navegador.
Embora a lembrança de senha possa ser gerenciada (desequilibrada por site) pelo usuário, ela é adequada para um computador pessoal, não para um computador "público" ou compartilhado.
No meu caso, é para um ERP em execução em computadores compartilhados, então tentarei a minha solução abaixo.
fonte
Markus levantou um grande ponto. Decidi procurar o
autocomplete
atributo e obtive o seguinte:Então, devo dizer que, embora não funcione 100% em geral, ele é tratado nos principais navegadores, por isso é uma ótima solução.
fonte
Eu tentei acima
autocomplete="off"
e ainda nada de sucesso. se você estiver usando js angulares, minha recomendação é ir com o botão e o ng-clique.Isso já tem uma resposta aceita e estou adicionando isso se alguém não puder resolver o problema com a resposta aceita, ele pode usar o meu mecanismo.
Obrigado pela pergunta e pelas respostas.
fonte
enter
oureturn
para enviar um formulário.Uma maneira que eu sei é usar (por exemplo) JavaScript para copiar o valor do campo de senha antes de enviar o formulário.
O principal problema disso é que a solução está vinculada ao JavaScript.
Então, novamente, se ele pode ser vinculado ao JavaScript, você também pode fazer o hash da senha no lado do cliente antes de enviar uma solicitação ao servidor.
fonte
O problema real é muito mais profundo do que apenas adicionar atributos ao seu HTML - isso é uma preocupação comum de segurança, é por isso que as pessoas inventaram chaves de hardware e outras coisas malucas por segurança.
Imagine que o preenchimento automático = "off" está funcionando perfeitamente em todos os navegadores. Isso ajudaria na segurança? Claro que não. Os usuários anotam suas senhas em livros didáticos, em adesivos anexados ao monitor, onde todos os visitantes do escritório podem vê-las, salvando-as em arquivos de texto na área de trabalho e assim por diante.
Geralmente, o aplicativo da Web e o desenvolvedor da Web não são responsáveis de forma alguma pela segurança do usuário final. Os usuários finais podem se proteger apenas. Idealmente, eles DEVEM manter todas as senhas em suas cabeças e usar a funcionalidade de redefinição de senha (ou entrar em contato com o administrador) caso eles a esqueçam. Caso contrário, sempre haverá o risco de a senha ser vista e roubada de alguma forma.
Portanto, ou você tem uma política de segurança maluca com chaves de hardware (como alguns bancos oferecem para Internet banking, que basicamente emprega autenticação de dois fatores) ou SEM SEGURANÇA, basicamente. Bem, isso é um pouco exagerado, é claro. É importante entender do que você está tentando se proteger:
Neste post em particular, vejo requisitos inadequados para o desenvolvedor, que ele nunca poderá resolver devido à natureza do problema - segurança do usuário final. Meu ponto subjetivo é que o desenvolvedor deve basicamente dizer NÃO e apontar para o problema dos requisitos, em vez de perder tempo com essas tarefas, honestamente. Isso não torna absolutamente o seu sistema mais seguro, mas sim os casos com adesivos nos monitores. Infelizmente, alguns chefes ouvem apenas o que querem ouvir. No entanto, se eu fosse você, tentaria explicar de onde vem o problema real e o preenchimento automático = "desativado" não o resolveria, a menos que forçasse os usuários a manter todas as suas senhas exclusivamente na cabeça! O desenvolvedor do seu lado não pode proteger completamente os usuários,
fonte
Enfrentando o mesmo problema da HIPAA e encontrando uma solução relativamente fácil,
Crie um campo de senha oculta com o nome do campo como uma matriz.
Use a mesma matriz para o campo de senha real.
O navegador (Chrome) pode solicitar que você "salve a senha", mas, independentemente do usuário selecionar salvar, na próxima vez que efetuar o login, a senha preencherá automaticamente o campo de senha oculta, o slot zero na matriz, deixando o 1º slot em branco.
Eu tentei definir a matriz, como "senha [parte2]", mas ela ainda lembrava. Eu acho que ele joga fora se é uma matriz não indexada, porque não tem escolha a não ser deixá-lo em primeiro lugar.
Então você usa sua linguagem de programação preferida para acessar a matriz, PHP, por exemplo,
fonte
Como a maioria das
autocomplete
sugestões, incluindo a resposta aceita, não funcionam em navegadores web de hoje (gerenciadores de senha ou seja, navegador web ignorarautocomplete
), uma solução mais romance é a troca entrepassword
etext
tipos e fazer a cor de fundo combinar com a cor do texto quando o campo é um campo de texto sem formatação, que continua a ocultar a senha enquanto é um campo de senha real quando o usuário (ou um programa como o KeePass) está inserindo uma senha. Os navegadores não pedem para salvar senhas armazenadas em campos de texto sem formatação.A vantagem dessa abordagem é que ela permite aprimoramento progressivo e, portanto, não requer Javascript para que um campo funcione como um campo de senha normal (você também pode começar com um campo de texto sem formatação e aplicar a mesma abordagem, mas isso não é realmente HIPAA Compatível com PHI / PII). Essa abordagem também não depende de formulários / campos ocultos que podem não ser necessariamente enviados para o servidor (porque estão ocultos) e alguns desses truques também não funcionam em vários navegadores modernos.
plugin jQuery:
https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js
Código fonte relevante do link acima:
Demo:
https://barebonescms.com/demos/admin_pack/admin.php
Clique em "Adicionar entrada" no menu e role para a parte inferior da página para "Módulo: Parar o gerenciador de senhas".
Isenção de responsabilidade: Embora essa abordagem funcione para pessoas com visão, pode haver problemas com o software do leitor de tela. Por exemplo, um leitor de tela pode ler a senha do usuário em voz alta porque vê um campo de texto sem formatação. Também pode haver outras consequências imprevistas do uso do plug-in acima. A alteração da funcionalidade interna do navegador da Web deve ser feita com moderação, testando uma ampla variedade de condições e casos extremos.
fonte
O site informa ao navegador que é uma senha usando
<input type="password">
. Portanto, se você deve fazer isso da perspectiva de um site, precisará alterar isso. (Obviamente, eu não recomendo isso).A melhor solução seria fazer com que o usuário configure seu navegador para que não se lembre de senhas.
fonte
Se você não quiser confiar no sinalizador de preenchimento automático, verifique se o usuário digita na caixa usando o evento onchange. O código abaixo é um formulário HTML simples. O elemento oculto do formulário password_edit começa definido como 0. Quando o valor da senha é alterado, o JavaScript na parte superior (função pw_edit) altera o valor para 1. Quando o botão é pressionado, ele verifica o código do valueenter aqui antes de enviar o formulário . Dessa forma, mesmo que o navegador o ignore e preencha automaticamente o campo, o usuário não poderá passar pela página de login sem digitar o campo de senha. Além disso, certifique-se de colocar em branco o campo da senha quando o foco estiver definido. Caso contrário, você pode adicionar um personagem no final, depois voltar e removê-lo para enganar o sistema. Eu recomendo adicionar o autocomplete = "off" à senha, mas este exemplo mostra como o código de backup funciona.
fonte
autocomplete = "off" não funciona para desabilitar o gerenciador de senhas no Firefox 31 e provavelmente não em algumas versões anteriores.
Confira a discussão no mozilla sobre este problema: https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Queríamos usar um segundo campo de senha para inserir uma senha descartável gerada por um token. Agora estamos usando uma entrada de texto em vez de uma senha. :-(
fonte
Foi-me dada uma tarefa semelhante para desativar o preenchimento automático de nomes e senhas de login pelo navegador, depois de muitas tentativas e erros, achei a solução abaixo a ideal. Basta adicionar os controles abaixo antes dos controles originais.
Isso está funcionando bem para IE11 e Chrome 44.0.2403.107
fonte
autocomplete = "off" funciona para a maioria dos navegadores modernos, mas outro método que usei que funcionou com sucesso com o Epiphany (um navegador do GNOME para WebKit) é armazenar um prefixo gerado aleatoriamente no estado da sessão (ou em um campo oculto). uma variável adequada no estado da sessão) e use-a para alterar o nome dos campos. O Epiphany ainda deseja salvar a senha, mas quando voltar ao formulário, não preencherá os campos.
fonte
Não tive problemas ao usar este método:
Use autocomplete = "off", adicione um campo de senha oculta e depois outro não oculto. O navegador tenta concluir automaticamente o oculto se não respeitar o preenchimento automático = "off"
fonte
Outra solução é fazer o POST usando um formulário oculto, onde todas as entradas são do tipo oculto. O formulário visível utilizará a entrada do tipo "senha". O último formulário nunca será enviado e, portanto, o navegador não poderá interceptar toda a operação do login.
fonte