Ayuda a los usuarios a cambiar las contraseñas fácilmente agregando una URL conocida para el cambio de contraseñas.

Redirecciona una solicitud a /.well-known/change-password a la URL de change-passwords

Establece un redireccionamiento desde /.well-known/change-password a la página para cambiar la contraseña de tu sitio web. Esto permitirá que los administradores de contraseñas dirijan a los usuarios directamente a esa página.

Introducción

Como probablemente sepas, las contraseñas no son la mejor manera de administrar cuentas. Afortunadamente, existen tecnologías emergentes, como WebAuthn, y técnicas, como las contraseñas de un solo uso, que nos ayudan a acercarnos a un mundo sin contraseñas. Sin embargo, estas tecnologías aún se están desarrollando y las cosas no cambiarán con rapidez. Muchos desarrolladores deberán seguir lidiando con las contraseñas durante al menos los próximos años. Mientras esperamos a que las tecnologías y técnicas emergentes se vuelvan comunes, al menos podemos hacer que las contraseñas sean más fáciles de usar.

Una buena forma de hacerlo es proporcionar una mejor compatibilidad con los administradores de contraseñas.

Cómo ayudan los administradores de contraseñas

Los administradores de contraseñas pueden estar integrados en los navegadores o proporcionarse como apps de terceros. Pueden ayudar a los usuarios de varias maneras:

Autocompletar la contraseña para el campo de entrada correcto: Algunos navegadores pueden encontrar la entrada correcta de forma heurística, incluso si el sitio web no está optimizado para este fin. Los desarrolladores web pueden ayudar a los administradores de contraseñas anotando correctamente las etiquetas de entrada HTML.

Prevenir el phishing: Como los administradores de contraseñas recuerdan dónde se grabó la contraseña, esta se puede autocompletar solo en las URLs adecuadas, y no en los sitios web de phishing.

Generar contraseñas únicas y seguras: Como el administrador de contraseñas genera y almacena directamente contraseñas únicas y seguras, los usuarios no tienen que recordar ni un solo carácter de la contraseña.

Generar y autocompletar contraseñas con un administrador de contraseñas ya es útil para la Web, pero, teniendo en cuenta su ciclo de vida, actualizar las contraseñas siempre que sea necesario es tan importante como generarlas y autocompletarlas. Para aprovecharlo de manera adecuada, los administradores de contraseñas agregan una nueva función:

Detecta contraseñas vulnerables y sugiere actualizarlas: Los administradores de contraseñas pueden detectar contraseñas reutilizadas, analizar su entropía y vulnerabilidad, y hasta detectar contraseñas potencialmente filtradas o que se sabe que no son seguras a partir de fuentes como Have I Been Pwned.

Un administrador de contraseñas puede advertir a los usuarios sobre contraseñas problemáticas, pero hay muchos inconvenientes cuando se les pide a los usuarios que naveguen de la página principal a una página para cambiar la contraseña, además de pasar por el proceso real de cambiar la contraseña (que varía de un sitio a otro). Sería más fácil si los administradores de contraseñas pudieran llevar al usuario directamente a la URL de cambio de contraseña. Aquí es donde resulta útil una URL conocida para cambiar contraseñas.

Al reservar una ruta de URL conocida que redireccione al usuario a la página para cambiar la contraseña, el sitio web puede redirigir fácilmente a los usuarios al lugar correcto para que cambien sus contraseñas.

Configura "una URL conocida para cambiar contraseñas"

Se propone .well-known/change-password como una URL conocida para cambiar contraseñas. Todo lo que tienes que hacer es configurar tu servidor para que redireccione las solicitudes de .well-known/change-password a la URL de cambio de contraseña de tu sitio web.

Por ejemplo, supongamos que tu sitio web es https://example.com y la URL para cambiar la contraseña es https://example.com/settings/password. Solo deberás configurar tu servidor para que redireccione una solicitud de https://example.com/.well-known/change-password a https://example.com/settings/password. Eso es todo. Para el redireccionamiento, usa el código de estado HTTP 302 Found, 303 See Other o 307 Temporary Redirect.

Como alternativa, puedes publicar HTML en tu URL .well-known/change-password con una etiqueta <meta> mediante un http-equiv="refresh".

<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">

Vuelve a revisar el código HTML de la página para cambiar la contraseña

El objetivo de esta función es ayudar a que el ciclo de vida de la contraseña del usuario sea más fluido. Puedes hacer dos cosas para permitir que el usuario actualice su contraseña sin problemas:

  • Si tu formulario para cambiar la contraseña necesita la contraseña actual, agrega autocomplete="current-password" a la etiqueta <input> para ayudar al administrador de contraseñas a autocompletarla.
  • Para el campo de contraseña nueva (en muchos casos, son dos campos para garantizar que el usuario haya ingresado la contraseña nueva correctamente), agrega autocomplete="new-password" a la etiqueta <input> para ayudar al administrador de contraseñas a sugerir una contraseña generada.

Obtén más información en las prácticas recomendadas para el formulario de acceso.

Cómo se usa en el mundo real

Ejemplos

Gracias a la implementación de Apple Safari, /.well-known/change-password ya está disponible en algunos sitios web importantes desde hace un tiempo:

Pruébalos y haz lo mismo por el tuyo.

Compatibilidad del navegador

Una URL conocida para cambiar contraseñas se admite en Safari desde 2019. El administrador de contraseñas de Chrome comenzará a admitirlo a partir de la versión 86 (que se lanzará de forma estable a fines de octubre de 2020) y es posible que otros navegadores basados en Chromium lo sigan. Firefox considera que vale la pena implementarlo, pero no ha indicado que planea hacerlo a partir de agosto de 2020.

Comportamiento del Administrador de contraseñas de Chrome

Veamos cómo el Administrador de contraseñas de Chrome trata las contraseñas vulnerables.

El administrador de contraseñas de Chrome puede detectar si se filtraron contraseñas. Si navegan a about://settings/passwords, los usuarios pueden ejecutar Check passwords en las contraseñas almacenadas y ver una lista de las contraseñas que se recomiendan actualizar.

Función Verificar contraseñas de Chrome

Si haces clic en el botón Cambiar contraseña junto a una contraseña que se recomienda actualizar, el navegador hará lo siguiente:

  • Abre la página para cambiar la contraseña del sitio web si /.well-known/change-password está configurada correctamente.
  • Abre la página principal del sitio web si /.well-known/change-password no está configurado y Google no conoce el resguardo.
¿Qué sucede si el servidor muestra 200 OK aunque /.well-known/change-password no existe?

Los administradores de contraseñas intentan determinar si un sitio web admite una URL conocida para cambiar contraseñas. Para ello, envían una solicitud a /.well-known/change-password antes de reenviar a un usuario a esta URL. Si la solicitud muestra 404 Not Found, es obvio que la URL no está disponible, pero una respuesta 200 OK no significa necesariamente que la URL esté disponible, ya que hay algunos casos extremos:

  • Un sitio web con renderización del servidor muestra el mensaje "No se encontró" cuando no hay contenido, pero con 200 OK.
  • Un sitio web de procesamiento del servidor responde con 200 OK cuando no hay contenido después de redireccionar a la página "No encontrado".
  • Una app de una sola página responde con la shell con 200 OK y renderiza la página “No se encontró” en el lado del cliente cuando no hay contenido.

En estos casos extremos, los usuarios se redireccionarán a una página que indica que no se encontró el contenido, lo que será una fuente de confusión.

Es por eso que existe un mecanismo estándar propuesto para determinar si el servidor está configurado para responder con 404 Not Found cuando realmente no hay contenido, solicitando una página aleatoria. En realidad, la URL también está reservada: /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200. Por ejemplo, Chrome usa esta ruta de URL para determinar con anticipación si puede esperar una URL de cambio de contraseña adecuada de /.well-known/change-password.

Cuando implementes /.well-known/change-password, asegúrate de que tu servidor muestre 404 Not Found para el contenido que no existe.

Comentarios

Si tienes comentarios sobre la especificación, infórmalo en el repositorio de especificaciones.

Recursos

Foto de Matthew Brodeur en Unsplash