防御中间人攻击

Defending Against Man-in-the-Middle Attacks

我正在编写一个与客户端和服务器一起工作的程序,如何提供数据保护很有趣。中间人攻击防护策略有哪些?

  1. 强制执行 HTTPS 并验证 CA。
  2. 使用 Strict-Transport-Security Header 防止 SSL 剥离 MITM 攻击。
  3. 使用Public Key Cryptography
  4. 加密数据
  5. 您可以为响应时间设置一个阈值(MITM 攻击会延迟响应时间),但这将适用于您几乎可以确定有效响应将低于阈值的环境。

只是想添加到最后一个答案中。如果您使用 HTTP 作为连接协议:

  1. 使用带 TLS1.2 的 HTTPS
  2. 使用密钥固定检查服务器的证书是否有效
  3. 使用 HSTS 防止未来的其他 MitM 攻击(防止 HTTPS->HTTP 降级攻击)
  4. 不提供 HTTP(或自动升级到 HTTPS)
  5. 如果可能,使用客户端 ssl 证书验证来验证客户端的身份
  6. 允许完全前向保密 (PFS)

如果您使用的是自定义协议(而非 HTTPS),则:

  1. 实施 TLSv1.2
  2. 使用证书固定(至少在服务器端,如果可能的话在客户端)
  3. 确保实施完美的前向保密