PHP - 反mitm攻击的想法


PHP - Anti mitm attack idea

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

有很多

原因说明这是一个坏主意,但是:

  1. 中间人攻击的解决方案是经过身份验证的加密(即TLS 1.1+)。红绿灯系统有效;用它!你甚至不需要做任何聪明的事情来使用它。只需安装 Caddy Server,如果您无法弄清楚 Apache/nginx/lighttpd 配置和/或 LetsEncrypt 集成过程。
  2. MitM 攻击(例如由 sslstrip 执行的攻击)与普通用户无法区分,因为您只能看到中间人,而看不到最终用户。除此之外,MitM 代理增加了微秒的开销,这与网络抖动几乎没有区别。

是最大的两个。

第 1 部分:它不起作用

即使您的想法按照您的预期和上面描述的那样工作,它也存在问题:

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

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

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

第 2 部分:高误报率

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

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

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

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

现代安全是许多人在很长一段时间内犯了很多错误并记录这些错误以从中吸取教训并避免重复它们的结果。如果你想创建自己的安全机制,你必须在追赶之前犯大量的错误(这些错误有据可查,所有攻击者都知道!)。