Redirecionar uma solicitação para /.well-known/change-password
para o URL de alteração de senhas
Defina um redirecionamento de /.well-known/change-password
para a página de alteração de senha
do seu site. Isso vai permitir que os gerenciadores de senhas direcionem os usuários
diretamente para essa página.
Introdução
Como você deve saber, as senhas não são a melhor maneira de gerenciar contas. Felizmente, existem tecnologias emergentes, como WebAuthn, e técnicas, como senhas únicas, que estão nos ajudando a chegar a um mundo sem senhas. No entanto, essas tecnologias ainda estão em desenvolvimento e as coisas não mudam tão rápido. Muitos desenvolvedores ainda vão precisar lidar com senhas pelo menos nos próximos anos. Enquanto aguardamos as tecnologias e técnicas emergentes se tornarem comuns, podemos pelo menos facilitar o uso de senhas.
Uma boa maneira de fazer isso é oferecer suporte melhor para gerenciadores de senhas.
Como os gerenciadores de senhas ajudam
Os gerenciadores de senha podem ser integrados aos navegadores ou fornecidos como apps de terceiros. Eles podem ajudar os usuários de várias maneiras:
Preenchimento automático da senha para o campo de entrada correto: alguns navegadores podem encontrar a entrada correta heuristicamente, mesmo que o site não esteja otimizado para esse propósito. Os desenvolvedores da Web podem ajudar os gerenciadores de senhas anotando corretamente as tags de entrada HTML.
Prevenir phishing: como os gerenciadores de senhas lembram onde a senha foi gravada, ela só pode ser preenchida automaticamente em URLs apropriados, e não em sites de phishing.
Gerar senhas fortes e exclusivas: como senhas fortes e exclusivas são geradas e armazenadas diretamente pelo gerenciador de senhas, os usuários não precisam se lembrar de um único caractere da senha.
A geração e o preenchimento automático de senhas usando um gerenciador de senhas já foram úteis para a Web, mas, considerando o ciclo de vida delas, atualizar as senhas sempre que necessário é tão importante quanto gerar e preencher automaticamente. Para aproveitar isso, os gerenciadores de senhas estão adicionando um novo recurso:
Detectar senhas vulneráveis e sugerir a atualização delas: os gerenciadores de senhas podem detectar senhas reutilizadas, analisar a entropia e a fraqueza delas e até detectar senhas potencialmente vazadas ou que são conhecidas por serem inseguras em fontes como o Have I Been Pwned.
Um gerenciador de senhas pode avisar os usuários sobre senhas problemáticas, mas há muito atrito ao solicitar que os usuários naveguem da página inicial para uma página de alteração de senha, além do processo real de mudar a senha, que varia de acordo com o site. Seria muito mais fácil se os gerenciadores de senhas pudessem direcionar o usuário diretamente para o URL de alteração de senha. É aqui que um URL conhecido para alterar senhas se torna útil.
Ao reservar um caminho de URL conhecido que redireciona o usuário para a página de alteração de senha, o site pode redirecionar facilmente os usuários para o lugar certo para alterar as senhas.
Configurar "um URL conhecido para alterar senhas"
.well-known/change-password
é proposto como um URL conhecido para alteração
de senhas. Tudo o que você precisa fazer é
configurar o servidor para redirecionar solicitações de .well-known/change-password
para o URL de alteração de senha do seu site.
Por exemplo, digamos que seu site seja https://example.com
e que o URL de alteração
de senha seja https://example.com/settings/password
. Basta definir
o servidor para redirecionar uma solicitação de
https://example.com/.well-known/change-password
para
https://example.com/settings/password
. É isso. Para o redirecionamento, use
o código de status HTTP
302 Found
, 303 See
Other
ou 307
Temporary Redirect
.
Como alternativa, é possível veicular HTML no URL .well-known/change-password
com uma tag <meta>
usando um http-equiv="refresh"
.
<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">
Acesse o HTML da página de alteração de senha
O objetivo desse recurso é ajudar o ciclo de vida da senha do usuário a ser mais fluido. Você pode fazer duas coisas para permitir que o usuário atualize a senha sem dificuldades:
- Se o formulário de mudança de senha precisar da senha atual, adicione
autocomplete="current-password"
à tag<input>
para ajudar o gerenciador de senhas a preenchê-la automaticamente. - Para o campo de nova senha (em muitos casos, são dois campos para garantir que o
usuário tenha inserido a nova senha corretamente), adicione
autocomplete="new-password"
à tag<input>
para ajudar o gerenciador de senhas a sugerir uma senha gerada.
Saiba mais em Práticas recomendadas para formulários de login.
Como ele é usado no mundo real
Exemplos
Graças à
implementação do Apple Safari,
/.well-known/change-password
já está disponível em alguns sites
principais há algum tempo:
Teste-as e faça o mesmo com as suas.
Compatibilidade com navegadores
Um URL conhecido para a alteração de senhas tem suporte no Safari desde 2019. O Gerenciador de senhas do Chrome começa a oferecer suporte a ela a partir da versão 86 (que está programada para o lançamento estável no final de outubro de 2020) e outros navegadores baseados no Chromium podem seguir o exemplo. O Firefox acha que vale a pena ser implementado, mas não indicou que planeja fazê-lo em agosto de 2020.
Comportamento do gerenciador de senhas do Chrome
Vamos analisar como o gerenciador de senhas do Chrome trata as senhas vulneráveis.
O gerenciador de senhas do Chrome pode verificar se há senhas vazadas. Ao navegar
para about://settings/passwords
, os usuários podem executar a verificação de senhas em relação às senhas
armazenadas e conferir uma lista de senhas que precisam ser atualizadas.
Ao clicar no botão Change password ao lado de uma senha que precisa ser atualizada, o navegador:
- Abra a página de alteração de senha do site se o
/.well-known/change-password
estiver configurado corretamente. - Abra a página inicial do site se
/.well-known/change-password
não estiver configurado e o Google não conhecer o substituto.
200 OK
mesmo que /.well-known/change-password
não exista?Os gerenciadores de senha tentam determinar se um site oferece suporte a um URL conhecido para
alterar senhas enviando uma solicitação para /.well-known/change-password
antes
de encaminhar um usuário para esse URL. Se a solicitação retornar 404 Not Found
,
é óbvio que o URL não está disponível, mas uma resposta 200 OK
não
significa necessariamente que o URL está disponível, porque há alguns casos extremos:
- Um site com renderização do lado do servidor exibe "Not found" quando não há conteúdo,
mas com
200 OK
. - Um site de renderização do lado do servidor responde com
200 OK
quando não há conteúdo após o redirecionamento para a página "Não encontrado". - Um app de página única responde com o shell com
200 OK
e renderiza a página "Não encontrado" no lado do cliente quando não há conteúdo.
Nesses casos extremos, os usuários serão encaminhados para uma página "Não encontrada", o que causará confusão.
É por isso que há um mecanismo padrão proposto
para determinar se o servidor está configurado para responder com 404 Not Found
quando não há conteúdo, solicitando uma página aleatória. Na verdade, o
URL também está reservado:
/.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200
.
O Chrome, por exemplo, usa esse caminho de URL para determinar se pode esperar um
URL de alteração de senha adequado de /.well-known/change-password
com antecedência.
Ao implantar /.well-known/change-password
, verifique se o
servidor retorna 404 Not Found
para conteúdo inválido.
Feedback
Se você tiver algum feedback sobre a especificação, envie um problema para o repositório de especificações.
Recursos
- Um URL conhecido para alterar senhas
- Como detectar a confiabilidade de códigos de status HTTP
- Práticas recomendadas para o formulário de login
Foto de Matthew Brodeur no Unsplash