For AI agents: the complete documentation index is available at https://tingfeng347.github.io/windwiki/llms.txt, the full documentation bundle is available at https://tingfeng347.github.io/windwiki/llms-full.txt, and this page is available as Markdown at https://tingfeng347.github.io/windwiki/terminology/security-auth.md.

安全与身份认证 · 面试清单

面试权重:★★★★☆ 后端必考基础题;失分点不在「不知道」,而在把授权令牌当成身份证明。


一、基础概念

术语一句话释义
认证 Authentication回答「你是谁」——验证身份声明
授权 Authorization回答「你能做什么」——判断访问权限
鉴权与凭证 Credential凭证是密码/证书/令牌,鉴权是用凭证做判断的过程
主体 Principal被认证的身份实体,可以是用户、服务、设备
MFA 多因素认证知识(密码)+ 持有(手机/硬件密钥)+ 生物特征,跨类别组合才算多因素
密码存储必须用慢哈希加盐:bcrypt / scrypt / Argon2;禁止 MD5/SHA1,也不要自己造算法
加盐 Salt每用户随机值,抵御彩虹表与相同密码批量破解
会话 Session vs 令牌 Token服务端存状态、可即时撤销 vs 客户端持有、无状态但撤销难
无状态认证的代价省了服务端存储,但登出、改密、封禁都要靠短 TTL 或黑名单补
认证 vs 授权事故典型用 access token 当身份凭证、把角色判断放在前端、只校验登录不校验归属
零信任 Zero Trust不因在内网就信任,每次访问都验证身份与上下文
服务间认证mTLS、SPIFFE/SPIRE、客户端凭证模式,而不是共享一个密钥文件

二、OAuth 2.0

术语一句话释义
OAuth 2.0 是什么授权框架:让第三方在用户授权下有限度访问资源,不负责认证
四个角色资源所有者、客户端、授权服务器、资源服务器
授权码模式 Authorization Code标准路径:前端拿 code,后端用 code + client_secret 换 token,code 不暴露给浏览器
PKCE授权码模式的增强:code_verifier 与 code_challenge 绑定,防授权码拦截,公共客户端必须用
隐式模式 Implicit直接在前端返回 token,已不推荐(token 暴露在 URL/历史里)
密码模式 Password用户把密码交给客户端,仅限自家第一方应用,OAuth 2.1 已移除
客户端凭证模式机器对机器,没有用户上下文,用 client_id + secret 直接换 token
Token 类型Access Token(访问凭证,短期)、Refresh Token(换取新 access token,长期需保护)
Scope权限范围声明,服务端必须校验而不能只当注释
state 参数防 CSRF 的随机值,回调时必须校验一致性
redirect_uri 校验必须白名单精确匹配,否则授权码会被劫持到攻击者域
Token 自省 / Introspection资源服务器向授权服务器确认 token 有效性
Token 撤销 RevocationRFC 7009 的撤销端点;JWT 无状态时需配合黑名单或短 TTL
常见误用拿去当登录用、把 token 放 URL、隐含信任前端传来的 role、Scope 不校验

三、OIDC(OpenID Connect)

术语一句话释义
OIDC 是什么架在 OAuth 2.0 之上的认证层,补上「你是谁」这一环
ID Token一个 JWT,声明用户身份(sub、iss、aud、exp、nonce)
Access Token vs ID TokenAccess Token 给资源服务器用(不透明、不代表身份);ID Token 给客户端用(证明登录)
UserInfo 端点用 access token 换取用户资料,是 ID Token 之外的补充
Discovery 文档/.well-known/openid-configuration 提供各端点与公钥地址,实现自动配置
JWKS授权服务器公布公钥集,用于验证 ID Token 签名与支持密钥轮换
nonce客户端生成的随机值写入 ID Token,防重放
ID Token 校验步骤验签名 → 校验 iss/aud/exp/nonce → 再信任其中的声明
OIDC 的价值让第三方登录不再需要自定义协议,也是 SSO 的主流实现方式

四、SAML

术语一句话释义
SAML 是什么基于 XML 的企业级身份断言交换协议,OIDC 出现前是 SSO 的事实标准
SP(服务提供方)需要身份的业务系统
IdP(身份提供方)负责认证并签发断言的一方,如 ADFS、Okta、企微/钉钉
断言 AssertionIdP 签名的 XML,包含用户标识与属性(部门、角色)
SP 发起 vs IdP 发起从业务系统跳 IdP,或从企业门户点击应用直接进入
元数据 Metadata双方交换的 XML 配置:端点、证书、绑定方式
优点与缺点企业生态成熟、属性丰富 vs XML 冗长、移动端不友好、调试痛苦
OAuth / OIDC / SAML 怎么选新系统与移动端选 OIDC;已有企业 IdP 且只做 Web SSO 用 SAML;OAuth 单独存在时只解决授权

五、JWT

术语一句话释义
JWT 结构Header.Payload.Signature 三段 Base64URL,用点连接
签名 vs 加密JWS 保证完整性与来源(可读不可改),JWE 才加密内容;JWT 默认是明文可读的
签名算法HS256(对称共享密钥)适合单体内部;RS256/ES256(非对称)适合多方验签
alg: none 攻击服务端若信任头部声明的算法会被绕过;必须固定算法白名单
密钥混淆攻击用公钥当 HS256 的共享密钥验签,导致伪造成功
载荷不要放敏感信息因为只签名不加密,任何人都能解出 payload
无状态与撤销难题签发后到过期前无法自然失效;解法是短 TTL + Refresh Token + 黑名单
必须校验的字段exp、nbf、iss、aud,只验签名不看声明是最常见的漏洞
Token 刷新策略access token 短(分钟级)、refresh token 长(可撤销、可轮换、单次使用)
Refresh Token 轮换每次使用即作废并发新的,检测到重复使用说明已被窃取

六、SSO 与身份联邦

术语一句话释义
SSO一次登录、多个系统可用,核心是信任同一 IdP
CAS早期 Web SSO 协议,靠 ticket 校验,国内高校/企业仍常见
身份联邦 Federation跨组织的身份互信,用户账号留在原组织
单点登出 SLO一处登出全部失效;靠 IdP 通知各 SP,实现难度大、常被降级为本地登出
会话 Cookie 的域SSO 依赖共享父域 Cookie;跨域则需要重定向式会话同步或前后端分离的 token 方案
会话固定攻击登录后必须重新生成 SessionID,否则攻击者可预置会话
会话超时策略空闲超时 + 绝对超时 + 定期重新认证,敏感操作二次验证

七、权限模型

术语一句话释义
ACL 访问控制列表直接给资源挂「谁能做什么」的清单,简单、适合文件系统
DAC vs MAC属主自主授权 vs 系统强制策略(如密级标签)
RBAC 基于角色的访问控制用户 → 角色 → 权限,管理成本低,是多数业务系统的选择
RBAC 的局限角色爆炸、难以表达「仅能访问自己的数据」这类条件
ABAC 基于属性的访问控制用主体/资源/环境属性写策略,表达力强但策略管理复杂
ReBAC 基于关系的访问控制按关系图判断(如 Google Zanzibar、OpenFGA),适合「文档的协作者」这类场景
数据权限 vs 功能权限前者限制能看哪些数据行(部门/本人/全部),往往比菜单权限更关键
最小权限原则只给完成任务所需的最小权限,且默认拒绝、按需显式放开
职责分离 SoD关键操作不能由一人完成(发起与审批分离),是内控与合规要求
水平越权 vs 垂直越权同角色访问他人数据 vs 低权限执行高权限操作,前者更常见也更容易被忽略
权限缓存与失效权限变更后要能及时失效,否则「已回收权限仍可用」是重大隐患

八、Web 安全漏洞

术语一句话释义
OWASP Top 10失效的访问控制、加密失败、注入、不安全设计、安全配置错误、脆弱组件、认证失败、数据完整性失败、日志监控不足、SSRF
XSS 跨站脚本把脚本注入页面执行;存储型最危险,防御靠输出转义 + CSP + 输入白名单
CSRF 跨站请求伪造借用户已登录的 Cookie 发请求;防御靠 SameSite、CSRF Token、校验 Origin
XSS vs CSRF前者是让脚本在受害者浏览器里执行,后者是借受害者身份发请求
SQL 注入用户输入被当 SQL 执行;参数化查询是唯一可靠解法
SSRF 服务端请求伪造让服务端去请求内网地址,常配合云元数据接口(169.254.169.254)拿到凭证
XXE 外部实体注入XML 解析时加载外部实体读文件或发请求;禁用外部实体声明即可防
反序列化漏洞不可信数据直接反序列化可导致远程命令执行,避免原生序列化格式传数据
越权漏洞只校验「已登录」不校验「有没有权限」,是业务系统最高发的漏洞
CSP 内容安全策略通过响应头限制脚本/资源来源,是缓解 XSS 的纵深防御手段
SameSite CookieLax 为现代浏览器默认,能挡住大部分 CSRF;跨站场景要显式设 None; Secure
CORS 配置错误Access-Control-Allow-Origin 反射任意源 + 允许携带凭证,等于开放全部接口
加密传输全站 HTTPS、HSTS、证书校验;内网也要 TLS,不要在应用层自己发明加密协议
敏感数据保护存储加密与字段级脱敏、日志脱敏、密钥托管 KMS、禁止密钥进代码仓库
限流与防爆破登录失败计数、验证码、IP 与账号双维度限流
审计日志记录谁在何时做了什么(尤其权限变更与数据导出),是事后追溯的唯一依据

九、常见配置错误清单

术语一句话释义
默认密钥未更换JWT 密钥、加密盐、管理后台默认密码从未修改
回调地址通配符用 * 或宽松前缀匹配 redirect_uri,直接导致授权码泄露
调试端点暴露actuator / swagger / 健康检查在生产可公网访问
过长 Token 有效期access token 有效期几天甚至永久,泄露后无法挽回
CORS 全放开Allow-Origin: * 且允许凭证,浏览器都会警告但仍大量存在
错误信息过度暴露返回堆栈、SQL 与内部 IP,为攻击者提供情报
权限只在前端做后端不做归属与角色校验,改个请求参数就能越权
日志里打全量请求体密码、身份证、token 被写进日志,成为二次泄露源
依赖组件不更新长期不升级的框架与中间件,已知 CVE 堆叠
未做速率限制登录、短信、验证码接口无限流,直接被刷爆

参考资料