身份认证与访问控制:从密码到 MFA
摘要
区分认证与授权,讲解加盐慢哈希存密码、会话管理、MFA(TOTP/WebAuthn)、SSO(OAuth2/OIDC/SAML)、RBAC/ABAC 与常见越权漏洞防护。
身份认证与访问控制:从密码到 MFA
引言
“你是谁”(认证 Authentication)和“你能做什么”(授权 Authorization)是安全的两道门。本文理清概念,并给出落到实处的实践。
一、认证 vs 授权
认证:验证身份——“你是你声称的那个人吗?”
授权:验证权限——“你被允许做这件事吗?”
两者常被混用,但出问题时排查方向完全不同(登不进是认证问题,能进但看到不该看的,是授权问题)。
二、密码怎么存才安全
永远不要明文存密码。正确做法是加盐慢哈希:
更推荐 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 身份认证备忘单
下一篇:《社会工程学与钓鱼攻击防范》
