PHP - 反中间人攻击思路

PHP - Anti mitm attack idea

我想对我的网站实施 mitm(中间人)攻击,所以我决定问问你这有多安全。首先,我会在几秒钟内从客户端计算机获得 10 个页面加载时间。然后我会计算所有这些加载时间的标准。然后,每次用户加载新页面时,我都会检查 his/her ip 地址是否已更改,如果已更改,我会重新计算该标准并将其与以前的标准进行比较。如果这个标准大 1 或 2 并不重要,但如果它是 4,我可以注销用户。然后,如果攻击者的互联网连接速度较慢,他就会被注销。我敢肯定我不是唯一想到这个的人,但我不知道这个是否被使用。

这不是一个好主意的原因有很多,但是:

  1. 中间人攻击的解决方案是authenticated encryption (i.e. TLS 1.1+). TLS works; USE IT! You don't even need to do anything clever to use it. Just install Caddy Server如果你搞不懂Apache/nginx/lighttpd配置and/orLetsEncrypt集成过程
  2. MitM 攻击(例如由 sslstrip 执行的攻击)与普通用户无法区分,因为您只会看到中间人,而不是最终用户。除此之外,MitM 代理增加了数微秒的开销,这与网络抖动几乎没有区别。

最大的两个。

第 1 部分:它不起作用

即使您的想法如您所愿并如上文所述,它也存在问题:

如果单独使用,它无法防止被动的中间人攻击,因此攻击者仍然能够窃取 cookie、密码、信用卡等。

如果打算在 TLS 之外使用它,问题就变成了:为什么?如果 TLS 足够,则不需要,TLS 相当不错。

但是为了争论起见,让我们假设 TLS 被破坏了。如果针对 TLS 的攻击是被动的,那么我们又回到了第一种情况——没有针对被动攻击者的保护。如果针对 TLS 的攻击处于活动状态,仍然没有任何有意义的保护:您的服务器将拒绝请求,但到那时为时已晚。攻击者已经看到请求 - 以及其中的 cookie/密码/信用卡!

第 2 部分:高误报率

很多用户更改 IP 地址,而且很多用户的延迟变化很大。你会一直注销他们,这对他们来说将是一次糟糕的经历。我想这会特别影响移动用户。

第 3 部分:关于不发明自己的安全机制的常见文章

TLS 是大量聪明人长期辛勤工作的结果:当我说你自己不可能想出更好的东西时,我的意思不是侮辱你.

安全方面的创新通常来自那些已经熟悉工作主体的人,他们在以前的基础上做出改进。原因如下:

现代安全是很多人在很长一段时间内犯下很多错误并记录这些错误以便从中吸取教训并避免重蹈覆辙的结果。如果你想创建自己的安全机制,你将不得不犯很多错误(错误有据可查,所有攻击者都知道!)才能赶上。