添加用于更改密码的常用网址,帮助用户轻松更改密码

将对 /.well-known/change-password 的请求重定向到更改密码网址

设置从 /.well-known/change-password 到“更改密码”页面的重定向 。启用此设置后,密码管理工具即可为您的用户导航 直接转到该网页

简介

如您所知,密码并不是管理 账号。 幸运的是,新兴技术也在不断涌现 WebAuthn 以及动态密码等技术, 正在帮助我们拉近一个无需密码的世界不过,这些 相关技术仍处于发展阶段,不会迅速改变。很多 至少在接下来的几个时间里,开发者 仍然需要处理密码问题 。在我们等待新兴技术和技术成为 那么我们至少可以使密码更易于使用。

为实现该目标,建议为密码管理工具提供更好的支持。

密码管理工具的作用

密码管理工具可内置在浏览器中,也可作为第三方应用提供。 它们可以通过多种方式为用户提供帮助:

为正确的输入字段自动填充密码:某些浏览器可以 启发式方式确定正确的输入,即使网站没有针对该目标进行优化 目的。网络开发者可以通过正确注释 HTML 来帮助密码管理工具 输入标记

防范钓鱼式攻击:因为密码管理工具会记住密码所在的位置 因此系统只会在相应的网址(而不是 钓鱼式攻击网站。

生成安全系数高且独一无二的密码:使用安全系数高且独一无二的密码 由密码管理器直接生成和存储,因此用户无需 密码的单个字符。

目前已经可以使用密码管理器生成和自动填充密码 但考虑到它们的生命周期,更新密码 与生成和自动填充一样重要。接收者 充分利用这一点,密码管理工具添加了一项新功能:

检测易受攻击的密码并建议更新密码:密码管理工具可以 检测重复使用的密码,分析密码的熵和弱点, 甚至可以检测可能被泄露的密码或已知不安全的密码 (例如“有人被侵了”等来源)

密码管理工具可以针对有问题的密码向用户发出警告, 让用户从首页导航到更改密码 除了执行实际的更改密码流程外 因网站而异)。如果密码管理器能够 将用户直接转到更改密码网址。这时, 可用于更改 密码变得有用。

通过保留一个知名的网址路径来将用户重定向到更改 网站可以轻松地将用户重定向到正确的位置 更改密码

设置“用于更改密码的知名网址”

建议将 .well-known/change-password 作为用于更改 密码。你所要做的就是 将您的服务器配置为重定向 .well-known/change-password 的请求 。

例如,假设您的网站是 https://example.com,将 密码网址为 https://example.com/settings/password。您只需要设置 将请求重定向到 https://example.com/.well-known/change-passwordhttps://example.com/settings/password。大功告成。对于重定向,请使用 HTTP 状态代码 302 Found303 See Other307 Temporary Redirect

或者,您可以在您的 .well-known/change-password 网址中提供 HTML 使用<meta> http-equiv="refresh"

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

重新访问“更改密码”页面的 HTML

此功能旨在帮助用户的密码生命周期更流畅。 您可以执行以下两项操作,让用户无需自行更新密码 摩擦:

  • 如果您的更改密码表单需要当前密码,请添加 将 autocomplete="current-password" 添加到 <input> 标记,以帮助输入密码 请自动填充相应信息
  • 对于新密码字段(在很多情况下,此字段为两个字段,以确保 用户已正确输入新密码),请添加 将 autocomplete="new-password" 添加到 <input> 标记,以帮助输入密码 管理员建议一个生成的密码。

如需了解详情,请参阅最佳登录表单 做法

在现实生活中的使用方式

示例

这要归功于 Apple Safari 的 实现、 “/.well-known/change-password”已经在某些主流平台上使用 一段时间:

自己动手试试看,自己也一样!

浏览器兼容性

自从开始,Safari 就支持一个众所周知的密码更改网址 2019 年。 从版本 86 开始,Chrome 的密码管理器会开始支持该密码管理工具 (计划于 2020 年 10 月底发布稳定版) 和其他基于 Chromium 的浏览器。Firefox 认为 实现, 但并没有表明他们计划从 2020 年 8 月起开始实施。

Chrome 的密码管理器行为

我们来看一下 Chrome 的密码管理器是如何处理易受攻击的密码。

Chrome 的密码管理器能够检查是否存在已泄露的密码。通过导航 到 about://settings/passwords 位用户可以对存储的 并查看建议更新的密码列表。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> Chrome 的检查密码功能

通过点击建议密码旁边的更改密码按钮, 更新后,浏览器会:

  • 如果 /.well-known/change-password 处于以下状态,请打开网站的更改密码页面 设置正确。
  • 如果未设置 /.well-known/change-password,请打开网站的首页 而 Google 不知道备用方式。
如果即使 /.well-known/change-password 不存在,服务器也返回 200 OK,该怎么办?

密码管理工具会尝试确定网站是否支持某个知名网址 若要更改密码,请在之前向/.well-known/change-password发送请求 确实会将用户转到此网址如果请求返回 404 Not Found 很明显,该网址不可用,但 200 OK 响应 并不一定表示该网址可用,因为存在一些极端情况:

  • 服务器端呈现的网站显示“未找到”没有内容时 但使用的是 200 OK
  • 如果没有任何响应,服务器端呈现的网站会返回 200 OK 在重定向至“未找到”后显示的内容页面。
  • 单页应用通过 shell 响应 200 OK,并呈现“Not “已找到”页面。

对于这些极端情况,用户会被转到“未找到”这样 可能会让用户感到困惑

因此,我们提议 机制 确定服务器是否配置为以 404 Not Found 进行响应 则请求一个随机网页。事实上, 网址也已预留: /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200。 例如,Chrome 使用此网址路径来确定是否可 正确的更改密码网址/.well-known/change-password

部署 /.well-known/change-password 时,请确保您的 服务器会针对任何不存在的内容返回 404 Not Found

反馈

如果您对该规范有任何反馈意见,请向该规范提交问题 代码库

资源

照片由 Matthew Brodeur 提供,由 Unshot 提供