Práticas recomendadas para o formulário de inscrição

Ajude os usuários a se inscrever, fazer login e gerenciar os detalhes da conta com o mínimo de problemas.

Se os usuários precisarem fazer login no seu site, um bom design do formulário de inscrição é essencial. Isso é especialmente verdadeiro para pessoas com conexões ruins, em dispositivos móveis, com pressa ou sob estresse. Formulários de inscrição mal projetados recebem altas taxas de rejeição. Cada rejeição pode significar um usuário perdido e insatisfeito, e não apenas uma oportunidade de inscrição perdida.

Confira um exemplo de formulário de inscrição muito simples que demonstra todas as práticas recomendadas:

Lista de verificação

Evite fazer login, se possível

Antes de implementar um formulário de inscrição e pedir que os usuários criem uma conta no seu site, considere se isso é realmente necessário. Sempre que possível, evite bloquear recursos por login.

O melhor formulário de inscrição é nenhum formulário de inscrição.

Ao pedir que um usuário crie uma conta, você se coloca entre ele e o que ele está tentando alcançar. Você está pedindo um favor e pedindo ao usuário que confie em você com dados pessoais. Cada senha e cada item de dados que você armazena tem "dívida de dados" de privacidade e segurança, tornando-se um custo e uma responsabilidade para seu site.

Se o principal motivo para você solicitar que os usuários criem uma conta for salvar informações entre as navegações ou sessões de navegação, considere usar o armazenamento do lado do cliente. Para sites de compras, forçar os usuários a criar uma conta para fazer uma compra é citado como um dos principais motivos de abandono do carrinho de compras. Defina a finalização de compra como padrão.

Deixe o processo de login evidente

Deixe óbvio como criar uma conta no seu site, por exemplo, com um botão Fazer login ou Fazer login no canto superior direito da página. Evite usar um ícone ambíguo ou uma frase vaga ("Participe!", "Participe") e não ocultam o login em um menu de navegação. O especialista em usabilidade Steve Krug resumiu essa abordagem à usabilidade do site: Não me faça pensar! Se você precisar convencer outras pessoas da sua equipe da Web, use os dados analíticos para mostrar o impacto de diferentes opções.

Duas capturas de tela de um modelo de site de e-commerce visto em um smartphone Android. O da esquerda usa um ícone para o link de login que é um pouco ambíguo. O da direita simplesmente diz "Fazer login".
Deixe o login óbvio. Um ícone pode ser ambíguo, mas um botão ou link Fazer login é óbvio.
Capturas de tela do login no Gmail: uma página mostrando o botão "Fazer login" quando clicado, leva a um formulário que também tem um link "Criar conta".
A página de login do Gmail tem um link para criar uma conta.
Em janelas maiores do que as mostradas aqui, o Gmail mostra um link Fazer login e um botão Criar uma conta.

Vincule as contas dos usuários que se inscreveram por um provedor de identidade, como o Google, e também por e-mail e senha. Isso é fácil de fazer se você consegue acessar o endereço de e-mail de um usuário nos dados de perfil do provedor de identidade e corresponder as duas contas. O código abaixo mostra como acessar os dados de e-mail de um usuário do Login do Google.

// auth2 is initialized with gapi.auth2.init()
if (auth2.isSignedIn.get()) {
  var profile = auth2.currentUser.get().getBasicProfile();
  console.log(`Email: ${profile.getEmail()}`);
}

Deixe claro como acessar os detalhes da conta

Depois que um usuário faz login, deixe claro como acessar os detalhes da conta. Em particular, deixe claro como mudar ou redefinir senhas.

Corte a bagunça do formulário

No fluxo de inscrição, seu trabalho é minimizar a complexidade e manter o usuário focado. Organize a vida. Não é hora de distrações e tentações.

Não desvie a atenção dos usuários para que eles não concluam a inscrição.

Na inscrição, peça o mínimo possível. Colete outros dados do usuário (como nome e endereço) somente quando for necessário e quando o usuário perceber um benefício claro ao fornecer esses dados. Tenha em mente que cada item de dados que você comunica e armazena gera custos e responsabilidades.

Não duplique as entradas apenas para garantir que os usuários tenham os dados de contato corretos. Isso atrasa a conclusão do formulário e não faz sentido se os campos do formulário forem preenchidos automaticamente. Em vez disso, envie um código de confirmação ao usuário depois que ele inserir os detalhes de contato e continue com a criação da conta quando ele responder. Esse é um padrão comum de inscrição: os usuários estão acostumados com ele.

Você pode considerar o login sem senha enviando um código aos usuários sempre que eles fizerem login em um novo dispositivo ou navegador. Sites como o Slack e o Medium usam uma versão disso.

Login sem senha no medium.com.

Assim como no login federado, isso tem a vantagem adicional de não precisar gerenciar as senhas dos usuários.

Considere a duração da sessão

Seja qual for a abordagem adotada para a identidade do usuário, você precisará tomar uma decisão cuidadosa sobre a duração da sessão: por quanto tempo o usuário permanece conectado e o que pode fazer com que você o desconecte.

Verifique se os usuários estão em um dispositivo móvel ou computador e se estão compartilhando no computador ou em dispositivos compartilhados.

Ajude os gerenciadores de senhas a sugerir e armazenar senhas com segurança

Você pode ajudar gerenciadores de senhas de terceiros e integrados ao navegador a sugerir e armazenar senhas para que os usuários não precisem escolher, lembrar ou digitar senhas. Os gerenciadores de senhas funcionam bem em navegadores modernos, sincronizando contas entre dispositivos, entre plataformas específicas e apps da Web e em novos dispositivos.

Por isso, é extremamente importante codificar os formulários de inscrição corretamente, principalmente para usar os valores corretos de preenchimento automático. Para formulários de inscrição, use autocomplete="new-password" para novas senhas e adicione os valores de preenchimento automático corretos a outros campos de formulário sempre que possível, como autocomplete="email" e autocomplete="tel". Você também pode ajudar os gerenciadores de senhas usando diferentes valores de name e id em formulários de inscrição e login, para o próprio elemento form, bem como qualquer elemento input, select e textarea.

Também é necessário usar o atributo type adequado para fornecer o teclado certo em dispositivos móveis e ativar a validação integrada básica pelo navegador. Saiba mais nas práticas recomendadas para formulários de pagamento e endereço.

Garantir que os usuários insiram senhas seguras

Ativar gerenciadores de senhas para sugerir senhas é a melhor opção. Incentive os usuários a aceitar as senhas fortes sugeridas por navegadores e gerenciadores de navegadores de terceiros.

No entanto, muitos usuários querem inserir as próprias senhas. Por isso, você precisa implementar regras para a força da senha. O Instituto Nacional de Padrões e Tecnologia dos EUA explica como evitar senhas não seguras.

Não permitir senhas comprometidas

Não importa quais regras você escolher para as senhas, nunca permita senhas que tenham sido expostas em violações de segurança.

Depois que um usuário digitar uma senha, você precisa verificar se ela não foi comprometida. O site Have I Been Pwned (em inglês) oferece uma API para verificação de senhas, ou você pode executar esse serviço.

O Gerenciador de senhas do Google também permite verificar se alguma das suas senhas foi comprometida.

Se você rejeitar a senha proposta por um usuário, informe-o especificamente por que ela foi rejeitada. Mostre os problemas inline e explique como corrigi-los, assim que o usuário inserir um valor, e não depois que ele enviar o formulário de inscrição e precisar esperar uma resposta do servidor.

Esclareça por que uma senha é rejeitada.

Não proibir a colagem de senhas

Alguns sites não permitem que o texto seja colado em campos de senha.

Proibir a colagem de senhas irrita os usuários, incentiva senhas memoráveis (e, portanto, mais fáceis de serem comprometidas) e, de acordo com organizações como o Centro Nacional de Segurança Cibernética do Reino Unido, pode até reduzir a segurança. Os usuários só ficam sabendo que a colagem não é permitida depois de tentarem colar a senha. Portanto, proibir a colagem de senhas não evita vulnerabilidades da área de transferência.

Nunca armazene nem transmita senhas em texto simples

Use sal e hash nas senhas e não tente inventar seu próprio algoritmo de hash.

Não forçar atualizações de senha

Não force os usuários a atualizar as senhas de forma arbitrária.

Forçar atualizações de senha pode ser caro para os departamentos de TI, irritante para os usuários e não tem muito impacto na segurança. Também é provável que incentive as pessoas a usar senhas memoráveis não seguras ou a manter um registro físico das senhas.

Em vez de forçar as atualizações de senha, monitore a atividade da conta incomum e avise os usuários. Se possível, monitore também senhas que foram comprometidas por causa de violações de dados.

Você também precisa fornecer aos usuários acesso ao histórico de login da conta, mostrando onde e quando um login ocorreu.

Página de atividade da conta do Gmail
Página de atividade da conta do Gmail.

Simplifique a alteração ou redefinição de senhas

Deixe claro para os usuários onde e como atualizar a senha da conta. Em alguns sites, é surpreendentemente difícil.

É claro que você também precisa facilitar a redefinição da senha para os usuários, caso eles a esqueçam. O Open Web Application Security Project fornece orientações detalhadas sobre como lidar com senhas perdidas.

Para manter sua empresa e os usuários seguros, é especialmente importante ajudá-los a mudar a senha caso descubram que ela foi comprometida. Para facilitar, adicione um URL /.well-known/change-password ao seu site que redirecione para a página de gerenciamento de senhas. Isso permite que os gerenciadores de senhas naveguem diretamente para a página em que os usuários podem mudar a senha do seu site. Esse recurso já foi implementado no Safari e no Chrome e será lançado em outros navegadores. Ajude os usuários a mudar senhas com facilidade adicionando um URL conhecido para a alteração de senhas explica como implementar isso.

Você também deve facilitar a exclusão da conta dos usuários, se isso for o que desejam.

Oferecer login por provedores de identidade de terceiros

Muitos usuários preferem fazer login em sites usando um endereço de e-mail e um formulário de inscrição com senha. No entanto, também é necessário permitir que os usuários façam login por um provedor de identidade de terceiros, também conhecido como login federado.

Página de login do WordPress
Página de login do WordPress, com opções de login do Google e da Apple.

Essa abordagem tem várias vantagens. Para usuários que criam uma conta usando o login federado, não é necessário pedir, comunicar ou armazenar senhas.

Também é possível acessar outras informações verificadas do perfil pelo login federado, como um endereço de e-mail. Isso significa que o usuário não precisa inserir esses dados, e você não precisa fazer a verificação. O login federado também pode facilitar muito a vida dos usuários quando eles recebem um novo dispositivo.

Como integrar o Login do Google no seu app da Web explica como adicionar o login federado às suas opções de inscrição. Muitas outras plataformas de identidade estão disponíveis.

Simplifique a troca de contas

Muitos usuários compartilham dispositivos e alternam entre contas usando o mesmo navegador. Independentemente de os usuários acessarem o login federado ou não, simplifique a troca de conta.

Gmail, mostrando a troca de conta
Troca de conta no Gmail.

Considerar oferecer autenticação multifator

A autenticação multifator significa garantir que os usuários forneçam autenticação de mais de uma maneira. Por exemplo, além de exigir que o usuário defina uma senha, você também pode aplicar a verificação usando um código de acesso único enviado por e-mail ou mensagem de texto SMS ou usando um código único baseado em app, uma chave de segurança ou um sensor de impressão digital. Os artigos Práticas recomendadas de OTP por SMS e Como ativar a autenticação forte com o WebAuthn explicam como implementar a autenticação multifator.

Você precisa oferecer (ou aplicar) a autenticação multifator se o site processa informações pessoais ou sensíveis.

Cuidado com os nomes de usuário

Não insista em um nome de usuário, a menos que você precise de um. Permita que os usuários se inscrevam e façam login usando apenas um endereço de e-mail (ou número de telefone) e senha ou login federado, se preferirem. Não force os usuários a escolher e lembrar de um nome de usuário.

Se o site exigir nomes de usuário, não imponha regras inadequadas a eles e não impeça os usuários de atualizar o nome de usuário. No back-end, você precisa gerar um ID exclusivo para cada conta de usuário, não um identificador com base em dados pessoais, como o nome de usuário.

Use também autocomplete="username" nos nomes de usuário.

Teste em vários dispositivos, plataformas, navegadores e versões

Teste os formulários de inscrição nas plataformas mais comuns para seus usuários. A funcionalidade do elemento de formulário pode variar, e diferenças no tamanho da janela de visualização podem causar problemas de layout. A BrowserStack permite testes gratuitos para projetos de código aberto em vários dispositivos e navegadores.

Implementar análises e monitoramento de usuários reais

Você precisa de dados de campo e de laboratório para entender como os usuários interagem com seus formulários de inscrição. O Analytics e o Real User Monitoring (RUM) fornecem dados sobre a experiência real dos usuários, como quanto tempo as páginas de inscrição levam para carregar, com quais componentes de interface os usuários interagem (ou não) e quanto tempo os usuários levam para concluir a inscrição.

Pequenas mudanças podem fazer uma grande diferença nas taxas de conclusão dos formulários de inscrição. O Google Analytics e o RUM permitem otimizar e priorizar mudanças e monitorar seu site para detectar problemas que não são expostos pelo teste local.

Continue aprendendo

Foto de @ecowarriorprincess no Unsplash.