面试题答案
一键面试潜在安全问题分析
- 重定向URI 篡改:
- 原理:攻击者修改重定向URI,使授权服务器将包含授权码的请求重定向到恶意站点,从而窃取授权码。
- 影响:恶意方获取授权码后可换取访问令牌,进而访问受保护资源。
- 授权码拦截:
- 原理:在授权码传输过程中,通过网络嗅探等手段拦截授权码。如在未加密的网络环境中,授权码可能被截获。
- 影响:同重定向URI篡改,攻击者可利用截获的授权码获取访问令牌。
- 访问令牌泄露:
- 原理:令牌存储或传输不当。例如客户端在本地存储的访问令牌被窃取(如通过XSS攻击),或者在网络传输中未加密被截获。
- 影响:攻击者可直接使用泄露的访问令牌访问受保护资源,无需通过正常的授权流程。
- 跨站请求伪造(CSRF)攻击:
- 原理:攻击者构造恶意链接或页面,诱使用户在已登录授权服务器的情况下点击,从而以用户名义发起授权请求。
- 影响:未经用户同意,恶意应用可能获得授权访问用户资源。
- 中间人攻击:
- 原理:攻击者在客户端与授权服务器、资源服务器之间的通信链路中,拦截、篡改通信内容。如修改请求参数、替换证书等。
- 影响:导致授权信息泄露、资源被非法访问或数据被篡改。
解决方案
- 针对重定向URI 篡改:
- 防范措施:
- 授权服务器严格验证重定向URI。在客户端注册时,记录合法的重定向URI,每次授权请求时,确保请求中的重定向URI与注册的一致。
- 采用白名单机制,只允许特定格式和来源的重定向URI。
- 防范措施:
- 针对授权码拦截:
- 防范措施:
- 采用HTTPS协议进行通信,对授权码传输过程进行加密,防止网络嗅探。
- 缩短授权码的有效期,即使授权码被截获,在短时间内也无法使用。
- 防范措施:
- 针对访问令牌泄露:
- 防范措施:
- 在客户端存储访问令牌时,采用安全的存储方式,如使用HTTP-only cookies(如果适用),防止XSS攻击窃取令牌。
- 对访问令牌的传输同样使用HTTPS加密。
- 定期更新访问令牌,设置合理的过期时间,降低令牌泄露后的风险。
- 防范措施:
- 针对跨站请求伪造(CSRF)攻击:
- 防范措施:
- 在授权请求中添加CSRF保护机制,如使用CSRF令牌。授权服务器生成并发送CSRF令牌给客户端,客户端在授权请求中将该令牌一同发送,服务器验证令牌的有效性。
- 检查请求来源,通过验证HTTP Referer头(但需注意其局限性,可被伪造)或使用更可靠的来源验证方式,如Origin头。
- 防范措施:
- 针对中间人攻击:
- 防范措施:
- 严格验证服务器证书,防止中间人替换证书。客户端在与服务器建立连接时,仔细检查证书的有效性、颁发机构等信息。
- 使用双向认证(Mutual TLS),不仅服务器向客户端验证身份,客户端也向服务器验证身份,增强通信双方的信任。
- 防范措施: