MST

星途 面试题库

面试题:安全认证之专家难度:OAuth 2.0应对复杂攻击场景的策略

假设你所在的系统基于OAuth 2.0安全框架,面临诸如重放攻击、跨站请求伪造(CSRF)攻击、令牌泄露等复杂的安全威胁场景。请详细说明针对每种攻击场景,你会采取哪些具体的技术手段和应对策略来保障系统安全,并且阐述如何在不影响用户体验和系统性能的前提下,实现这些安全策略的有效部署和实施。
25.4万 热度难度
后端开发安全认证

知识考点

AI 面试

面试题答案

一键面试

重放攻击

  1. 技术手段
    • 时间戳机制:在令牌生成时,加入时间戳信息。服务器验证令牌时,检查时间戳是否在合理的时间窗口内。例如,允许令牌在生成后的5分钟内有效,超过这个时间则判定为无效,防止攻击者使用旧令牌进行重放。
    • 一次性令牌:生成一次性使用的令牌,每次请求成功后,令牌即失效。下次请求需要重新获取新的令牌。如在支付场景中,支付令牌仅能用于一次支付操作。
  2. 部署实施
    • 时间戳机制:在令牌生成模块中添加时间戳生成逻辑,在验证模块中加入时间戳验证逻辑。时间窗口的设置需综合考虑网络延迟等因素,以不影响正常用户请求为前提。一般来说,5 - 10分钟的时间窗口较为合适。
    • 一次性令牌:在令牌管理系统中记录令牌的使用状态,每次请求验证通过后,将该令牌标记为已使用。同时,在客户端提示用户可能需要重新获取令牌的情况,尽量以友好的方式告知,如弹出提示框告知用户操作需要重新认证,以保证用户体验。

跨站请求伪造(CSRF)攻击

  1. 技术手段
    • CSRF令牌:在用户登录后,服务器生成一个随机的CSRF令牌并发送给客户端,客户端每次请求时将该令牌包含在请求头或请求参数中。服务器验证请求中的CSRF令牌与服务器端保存的令牌是否一致。
    • Same - Origin Policy(同源策略):利用浏览器的同源策略,限制跨域请求。只有来自同一源(协议、域名、端口相同)的请求才被允许访问受保护的资源。
  2. 部署实施
    • CSRF令牌:在用户登录成功后的响应中,将CSRF令牌以Cookie或响应头的形式返回给客户端。客户端在后续的所有需要保护的请求中,将CSRF令牌添加到请求头或请求参数中。服务器端在请求处理前,验证CSRF令牌的有效性。为了不影响用户体验,这个过程对用户应是透明的,无需用户手动操作。
    • Same - Origin Policy:一般情况下,现代浏览器默认遵循同源策略,无需额外配置。但在涉及跨域资源共享(CORS)的场景中,要谨慎配置CORS规则,只允许可信的源进行跨域请求,防止攻击者利用跨域漏洞进行CSRF攻击。

令牌泄露

  1. 技术手段
    • 加密存储:在客户端和服务器端,对令牌进行加密存储。例如,在客户端使用HTTPS协议传输令牌,并将令牌加密存储在本地存储或Cookie中(设置HttpOnly属性防止通过JavaScript获取)。在服务器端,使用安全的加密算法对令牌进行存储,如AES加密。
    • 令牌过期与刷新:设置合理的令牌过期时间,如短期令牌(如1小时)用于频繁操作,长期令牌(如7天)用于相对不频繁的操作。当短期令牌过期时,使用刷新令牌获取新的短期令牌,而无需用户重新登录。
    • 监控与异常检测:建立监控系统,实时监测令牌的使用情况。例如,监测令牌的请求频率、请求来源IP等信息。如果发现异常情况,如短时间内大量来自不同IP的请求使用同一令牌,及时锁定该令牌并通知用户。
  2. 部署实施
    • 加密存储:在客户端开发中,使用HTTPS协议确保数据传输安全。对于本地存储的令牌,使用加密库进行加密存储。在服务器端,配置数据库加密功能,对存储的令牌进行加密。这一系列操作对用户透明,不影响用户体验。
    • 令牌过期与刷新:在令牌生成模块中设置令牌过期时间逻辑。在客户端,当短期令牌过期时,自动使用刷新令牌获取新的短期令牌,整个过程用户无感知。在服务器端,建立刷新令牌的验证和新令牌生成机制。
    • 监控与异常检测:部署监控系统,如使用Prometheus和Grafana等工具,对令牌相关指标进行监控。设置合理的阈值,当检测到异常时,通过邮件、短信等方式通知管理员,同时在客户端向用户提示账户可能存在风险,引导用户采取安全措施,如重新登录、修改密码等。