URL中的随机字符串有助于对抗“中间人攻击”


Random string in URL helpful against "Man in the Middle Attack"?

场景如下:

在每个非购物车页面上生成一个新的md5(rand())会话变量。然后将该变量插入购物车链接的url中。点击购物车链接将是用户从http转移到https的点,所以我理解这是一个至关重要的交易,以确保安全,以防止一个人在服务器和用户之间注入自己。

为了访问购物车,当前会话变量必须匹配url中的字符串(例如"/shopping_car_url/{random_string}/"),否则会发送404错误。

  1. 只要会话不被破坏,这是否有效?
  2. 使用POST变量(或会话和POST中相同或不同的随机字符串)是否更有效(或无效)?
  3. 如果这是有效的,在购物车编辑/结帐过程的其余部分做同样的事情是否有任何好处,或者这是毫无意义的,因为用户此时已经连接到SSL ?

您在这里试图保护自己免受CSRF(跨站点请求伪造)而不是MITM。

一旦切换到https, MITM攻击实际上是不可能的,并且将物品添加到购物车通常不需要CSRF保护(与支付操作本身不同)。一定要阅读XSS &CSRF:验证后漏洞的实际利用。

然而,如果一个恶意的人在你切换到https之前设法将自己定位在用户和你的网站之间,他们也可以重写你的商店链接,但不使用https;这将取决于你的用户是否警惕地址栏中的锁图标。

不用麻烦了。保持你的网址简单明了;你的客户会更开心。如果您正确使用SSL,您就可以免受绝大多数传输层中间人攻击。