面试题答案
一键面试中间人攻击(MITM)
- 原理:攻击者拦截通信双方的流量,伪装成客户端与服务器通信,同时伪装成服务器与客户端通信。攻击者可以读取、修改甚至伪造传输的数据。例如在公共Wi-Fi环境中,攻击者搭建恶意AP,诱导用户连接,进而实施中间人攻击。
- 防御策略:
- 证书验证:客户端在建立连接时严格验证服务器证书的合法性,检查证书颁发机构(CA)是否受信任、证书是否过期、证书中的域名是否与访问的域名一致等。
- 证书钉扎:在客户端代码中预先嵌入服务器证书或证书的公钥哈希值,客户端只信任预先设定的证书,即使攻击者提供伪造证书也无法通过验证。
重放攻击
- 原理:攻击者捕获并记录合法的HTTPS通信数据包,之后在合适的时机重新发送这些数据包,以达到欺骗服务器执行重复操作的目的。比如攻击者记录下用户的支付请求包,然后重放该包,导致用户重复支付。
- 防御策略:
- 时间戳:在通信数据中加入时间戳字段,服务器接收到请求后,检查时间戳与当前时间的差值,若超出一定阈值则判定为无效请求,丢弃该数据包。
- 随机数(Nonce):通信双方每次交互生成一个唯一的随机数,服务器记录已接收的随机数,若接收到重复的随机数则认为是重放攻击。
心跳包漏洞(Heartbleed)
- 原理:这是OpenSSL库实现TLS心跳扩展时的漏洞。攻击者构造恶意的心跳请求包,使服务器将内存中的敏感信息(如私钥、用户名密码等)当作心跳响应包的一部分发送给攻击者。
- 防御策略:
- 及时更新软件:尽快更新OpenSSL库到没有该漏洞的版本,修复代码实现中的缺陷。
- 安全配置:在服务器配置中禁用存在漏洞的心跳扩展(虽然现在已很少使用这种方式,因为更新库更为彻底)。
证书伪造攻击
- 原理:攻击者通过各种手段(如攻陷CA机构、伪造CA证书等)创建一个伪造的服务器证书,试图让客户端相信它就是合法的服务器。
- 防御策略:
- 多CA验证:客户端配置多个受信任的CA列表,即使某个CA被攻陷,其他CA依然可以作为信任依据来验证证书。
- 在线证书状态协议(OCSP):客户端实时查询CA服务器,确认证书是否被吊销或存在异常。
- 证书透明度日志:利用证书透明度日志,公开所有颁发的证书信息,便于监测异常证书颁发行为。