这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
多因素认证 MFA
密码可能泄露,Token 可能被盗,设备可能被共享。MFA 的目标是在高风险场景中增加第二层证明,让攻击者即使拿到密码,也不一定能完成登录或敏感操作。
MFA 因子
常见认证因子分三类:
| 类型 | 示例 |
|---|---|
| 你知道的 | 密码、PIN |
| 你拥有的 | 手机、硬件密钥、TOTP 应用 |
| 你本人的 | 指纹、人脸 |
MFA 至少组合两类不同因子。密码 + 短信验证码是常见方案,但短信会受到 SIM 卡攻击和短信劫持影响;TOTP、WebAuthn 或硬件密钥安全性更高。
触发策略
MFA 不一定每次登录都触发,否则用户体验会很差。更合理的是基于风险触发:
- 新设备登录。
- 异地登录。
- 修改密码、邮箱、手机号。
- 提现、删除数据、生成 API Key 等高风险操作。
- 风控模型判断当前会话异常。
这叫自适应 MFA:低风险场景少打扰,高风险场景强验证。
恢复机制
MFA 设计必须考虑用户丢失手机或验证器的情况。常见恢复方式包括:
- 备用恢复码。
- 已登录设备确认。
- 人工审核。
- 企业管理员重置。
恢复流程本身也是攻击入口,不能比 MFA 更弱。人工审核要记录材料、审核人和处理结果。
安全实现
MFA 验证要注意:
- 验证码短期有效,限制重试次数。
- TOTP 要允许少量时间偏移,但不能过宽。
- 备用码只能使用一次,并加密存储。
- 通过 MFA 后可以给会话提升信任等级,但要设置有效期。
MFA 不是为了让所有操作更麻烦,而是把额外摩擦放在风险最高的地方。
与会话联动
完成 MFA 后,系统可以记录:
session.assurance_level = high
mfa_verified_at = now接下来一段时间内,用户执行敏感操作不必重复验证。超过时间或风险变化后,再要求重新验证。
下一章我们把账号密码、Token、会话、SSO、OAuth 和 MFA 合并成完整身份认证架构。