面试题答案
一键面试可能导致安全漏洞的情况
- 明文传输:在基本认证(Basic Authentication)中,用户名和密码以Base64编码后随请求发送,容易被截获和解码,导致信息泄露。
- 重放攻击:攻击者捕获包含认证信息的请求,然后重新发送该请求,以冒充合法用户。
- 密码破解:若密码强度不足,攻击者可通过暴力破解或字典攻击获取用户密码。
- 中间人攻击:攻击者拦截通信,篡改认证信息,如替换认证令牌,导致认证绕过或信息泄露。
- 会话劫持:攻击者获取用户的会话令牌(如Cookie、JWT等),利用其在会话有效期内进行未授权操作。
前端防护措施
- 加密传输:使用HTTPS协议,对整个通信过程进行加密,防止明文传输被截获。
- 安全存储:避免在前端存储敏感认证信息,如密码。对于会话令牌,使用HttpOnly和Secure属性的Cookie存储,防止XSS攻击窃取令牌和中间人攻击。
- 输入验证:对用户输入的认证信息(如用户名、密码)进行严格的前端验证,防止恶意输入。
- 防止重放:添加随机数(Nonce)或时间戳到认证请求中,前端生成唯一的Nonce并随请求发送,后端验证Nonce的唯一性和时效性,防止重放攻击。
后端防护措施
- 强密码策略:要求用户设置高强度密码,包括字母、数字、特殊字符的组合,并设置密码长度限制。定期提醒用户更新密码。
- 认证机制优化:避免使用基本认证,优先采用OAuth、OpenID Connect等更安全的认证协议。对于传统认证方式,采用加盐哈希(Salted Hashing)存储密码,增加破解难度。
- 会话管理:生成安全的会话令牌,如使用足够长度和复杂度的JWT,并设置合理的会话有效期。定期检查会话状态,检测异常活动,如异地登录等,并及时通知用户。
- 防止重放:后端验证前端发送的Nonce或时间戳,确保请求的新鲜性。记录已使用的Nonce,拒绝重复的请求。
- 防范中间人攻击:严格验证SSL证书,防止中间人伪造证书进行攻击。采用双向认证(Mutual TLS),增加通信双方的身份验证。
- 访问控制:实施严格的访问控制策略,基于用户角色和权限限制对资源的访问。对敏感操作进行二次认证,如资金转移等。
- 日志记录与监控:记录所有认证相关的活动,包括登录尝试、认证失败等。通过监控工具实时监测异常活动,如大量失败的登录尝试,及时采取措施,如锁定账户、报警等。