防御中间人攻击
Defending Against Man-in-the-Middle Attacks
我正在编写一个与客户端和服务器一起工作的程序,如何提供数据保护很有趣。中间人攻击防护策略有哪些?
- 强制执行 HTTPS 并验证 CA。
- 使用 Strict-Transport-Security Header 防止 SSL 剥离 MITM 攻击。
- 使用Public Key Cryptography
加密数据
- 您可以为响应时间设置一个阈值(MITM 攻击会延迟响应时间),但这将适用于您几乎可以确定有效响应将低于阈值的环境。
只是想添加到最后一个答案中。如果您使用 HTTP 作为连接协议:
- 使用带 TLS1.2 的 HTTPS
- 使用密钥固定检查服务器的证书是否有效
- 使用 HSTS 防止未来的其他 MitM 攻击(防止 HTTPS->HTTP 降级攻击)
- 不提供 HTTP(或自动升级到 HTTPS)
- 如果可能,使用客户端 ssl 证书验证来验证客户端的身份
- 允许完全前向保密 (PFS)
如果您使用的是自定义协议(而非 HTTPS),则:
- 实施 TLSv1.2
- 使用证书固定(至少在服务器端,如果可能的话在客户端)
- 确保实施完美的前向保密
我正在编写一个与客户端和服务器一起工作的程序,如何提供数据保护很有趣。中间人攻击防护策略有哪些?
- 强制执行 HTTPS 并验证 CA。
- 使用 Strict-Transport-Security Header 防止 SSL 剥离 MITM 攻击。
- 使用Public Key Cryptography 加密数据
- 您可以为响应时间设置一个阈值(MITM 攻击会延迟响应时间),但这将适用于您几乎可以确定有效响应将低于阈值的环境。
只是想添加到最后一个答案中。如果您使用 HTTP 作为连接协议:
- 使用带 TLS1.2 的 HTTPS
- 使用密钥固定检查服务器的证书是否有效
- 使用 HSTS 防止未来的其他 MitM 攻击(防止 HTTPS->HTTP 降级攻击)
- 不提供 HTTP(或自动升级到 HTTPS)
- 如果可能,使用客户端 ssl 证书验证来验证客户端的身份
- 允许完全前向保密 (PFS)
如果您使用的是自定义协议(而非 HTTPS),则:
- 实施 TLSv1.2
- 使用证书固定(至少在服务器端,如果可能的话在客户端)
- 确保实施完美的前向保密