身份认证与访问控制：从密码到 MFA 引言 “你是谁”（认证 Authentication）和“你能做什么”（授权 Authorization）是安全的两道门。本文理清概念，并给出落到实处的实践。一、认证 vs 授权认证：验证身份——“你是你声称的那个人吗？” 授权：验证权限——“你被允许做这件事吗？” 两者常被混用，但出问题时排查方向完全不同（登不进是认证问题，能进但看到不该看的，是授权问题）。二、密码怎么存才安全永远不要明文存密码。正确做法是加盐慢哈希： import hashlib, os salt = os.urandom(16) stored = hashlib.pbkdf2_hmac('sha256', pwd, salt, 100000) 更推荐 argon2 / bcrypt。加盐抵御彩虹表；慢哈希对抗暴力破解。还可加 “pepper”（全局密钥）进一步提升。三、会话管理登录后靠会话保持状态，要点： Cookie 加 HttpOnly + Secure + SameSite。会话 ID 随机且足够长，定期轮换。登出要真正销毁服务端会话。四、多因素认证（MFA）单靠密码不够，MFA 增加第二因子：你知道的（密码）你拥有的（手机 TOTP、硬件 Key）你本身的（指纹、人脸）实现方式： TOTP（Google Authenticator 类）：基于时间的一次性口令。 WebAuthn / FIDO2：基于公钥密码学的硬件/平台认证，抗钓鱼（凭证绑定域名）。推送确认：手机收到登录请求点同意。即便密码泄露，没有第二因子也登不进去。五、单点登录（SSO） OAuth 2.0：授权框架，常配合 OIDC 做认证。 SAML：企业常用，XML 体系。用 SSO 减少密码暴露面，但要保护好 IdP（身份提供方）本身。六、访问控制模型 RBAC（基于角色）：权限绑在角色上，用户被赋予角色。用户 → 角色(审计员) → 权限(只读日志) ABAC（基于属性）：按用户/资源/环境属性动态决策，更细但更复杂。七、常见漏洞（OWASP）失效的访问控制（Broken Access Control）：长期位居 OWASP Top 10 前列。 IDOR（不安全的直接对象引用）：靠改 URL 里的 ID 越权访问他人数据。权限提升：普通用户调到管理员。防护：服务端每次都校验权限（不能只靠前端隐藏按钮）、用间接引用、做越权测试。八、审计与监控关键操作留痕、异常登录告警（新设备、异地）、定期复核权限（离职即回收）。小结稳健的身份体系 = 强密码存储 + 安全会话 + MFA + 最小权限授权 + 持续审计。把这几件做扎实，账户被攻破的概率会大幅下降。最后一篇，我们聊聊最容易被人忽略的“人”这一环。延伸 OWASP 身份认证备忘单下一篇：《社会工程学与钓鱼攻击防范》