Impedir que os usuários colem dados em campos de entrada

Alguns sites afirmam que permitir que os usuários colem senhas reduz a segurança. No entanto, colar senhas melhora a segurança porque permite o uso de gerenciadores de senhas.

Os gerenciadores de senhas geralmente geram senhas fortes para os usuários, armazenam-nas com segurança e as colam automaticamente nos campos de senha sempre que os usuários precisam fazer login. Essa abordagem geralmente é mais segura do que forçar os usuários a digitar senhas curtas para lembrar.

Em geral, os usuários não podem ser impedidos de colar em elementos <input>.

Como essa auditoria do Lighthouse falha

O Lighthouse sinaliza o código que impede que os usuários colem em campos de entrada que não são somente leitura:

A página de auditoria do Lighthouse mostra que os usuários não conseguem colar em um campo de senha

O Lighthouse reúne todos os elementos <input> não de leitura-somente, coleta algum texto em cada elemento e verifica se o evento paste não foi impedido por um manipulador de eventos personalizado.

Também é possível impedir a colagem fora de um listener de evento paste. O Lighthouse não detecta esse cenário.

Como ativar a colagem em campos de senha

Encontrar o código que está impedindo a colagem

Para encontrar e inspecionar rapidamente o código que está impedindo a colagem:

  1. Abra o painel Event Listener Breakpoints.
  2. Abra a lista Clipboard.
  3. Marque a caixa de seleção paste
  4. Cole um texto em um campo de senha na página.
  5. O DevTools precisa pausar na primeira linha de código no listener de eventos paste relevante.

Remover o código que está impedindo a colagem

A origem do problema geralmente é uma chamada para preventDefault() no listener de eventos paste associado ao elemento de entrada de senha:

let input = document.querySelector('input');

input.addEventListener('paste', (e) => {
  e.preventDefault(); // This is what prevents pasting.
});

Se você estiver detectando apenas eventos de colagem para evitá-los, remova todo o listener de eventos.

Recursos

Código-fonte da auditoria Impedir que os usuários colem dados em campos de entrada