跳到正文

双因素认证

Two-factor Authentication

中级通用

双因素认证(Two-factor Authentication)是在登录时用两种不同类型的凭据确认身份,例如密码加验证器里的动态码。它解决的是密码泄露后,别人仅凭密码就能登录账号的问题。

你可能会说:「我想让后台账号输完密码后,还要用手机上的验证器确认一次,免得密码泄露就被登录。」

读之前建议先了解

动手看看

密码登录者本人登录手机验证器登录服务密码通过产品后台尚未放行
1

先看本人登录:输入正确密码,登录服务通过第一项校验。这证明你知道密码,但还不能直接进入后台。

要点

  1. 1

    两道验证来自不同类型的凭据

    你可以把密码理解为「你知道的东西」,把验证器生成的动态码理解为「你持有的东西」。两者来自不同类型,攻击者只拿到密码时,就还差一道验证。

  2. 2

    验证结果要由服务端决定

    做网站时,不能只在前端多加一个输入框。用户提交密码后,服务端还要校验第二因素;两步都通过,才给这个账号建立已登录会话,否则刷新页面或直接调用接口就可能绕过去。

  3. 3

    设备丢失也要有恢复路径

    用户换手机或丢失验证器时,可能拿不到动态码。我们需要提前考虑备用恢复码或人工核验流程,因为恢复入口如果只靠密码就能关闭双因素认证,前面的保护也会落空。

容易混淆的地方

双因素认证属于身份认证:它回答「登录的人是不是账号持有人」,不决定这个人能看哪些数据,那是权限控制。它也不等于「验证两次」:密码加密码提示答案仍偏向同一类凭据;关键在于使用不同类型的因素。

什么时候用

适合用

  • 你在做团队管理后台,账号能修改成员权限;登录时增加第二因素,可以降低密码泄露后的接管风险。
  • 你的 AI 工具允许用户查看私有知识库和调用付费模型;为账号登录提供双因素认证,保护数据与额度。
  • 产品支持从个人账号发起高风险操作,如修改收款信息;可以结合重新验证身份来保护这类操作。

不适合用

  • 你做的是无需账号的公开资料页,访客只需要阅读内容;这里不需要双因素认证,把精力放在页面访问与内容维护上。
  • 两个后端服务之间定时调用接口,没有人在登录;用适合服务身份的凭据和访问控制,而不是让程序输入手机动态码。
  • 你只是想限制匿名接口被频繁调用;双因素认证解决不了刷请求的问题,可以考虑速率限制。

练一练

你请 AI Agent 给团队后台增加双因素认证。下面哪种实现方向真正符合需求?

让 AI 帮你做

请为团队管理后台设计双因素认证:密码通过后,由服务端核验验证器动态码,两步都通过才建立完整登录会话;同时说明首次绑定、备用恢复码和设备丢失后的恢复流程,并检查后台接口能否绕过第二步。

接下来学什么