Api Token认证如何避免中间人

时间:2014-06-30 16:37:19

标签: api security rest ssl access-token

让我们想象一下,我没有使用SSL,而是在HTTP标头中发送令牌。令牌包含用户ID并已加密。

我可以想象一个中间人攻击者可以捕获令牌并使用它。如果我使用SSL,它应该足够安全吗?但如果我不使用SSL ......

我可以在令牌上添加一些内容,例如用户的IP,这样我就可以检查令牌中的请求IP和加密IP是否相同?

中间人攻击者可以伪造受害者的IP地址吗?生成令牌时,我可以使用任何其他用户相关信息吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

  

中间人攻击者(MITM)可以伪造受害者的IP地址吗?

既然你描述了可能的攻击,那么中间人,"是的,攻击者可以伪造受害者的IP地址。

  

生成令牌时,我可以使用任何其他与用户相关的信息吗?

当然,让用户生成一个永远不会以明文形式发送的随机数。并且最好确保服务器也这样做,以便中间人攻击者不能重放旧请求。用户如何确定他与真实服务器而不是攻击者进行通信?用证书更好地证明服务器的身份。

在设计一种能够抵御中间人攻击的协议时,会出现许多此类问题。如果你解决所有这些问题,你可能会想出一些与SSL非常相似的东西。对于许多开发人员来说,构建他们自己的安全传输协议并不值得花时间。

答案 1 :(得分:2)

继@ guest的优秀答案:

  

中间人攻击者可以伪造受害者的IP地址吗?

这取决于MITM的位置:

  • 如果他们在与受害者(但不是服务器)在同一网络上的另一台计算机上,那么他们可以共享相同的公共IP。 MITM正在拦截受害者的流量,但不需要欺骗IP地址,因为您的系统只会看到相同的公共IP。
  • 如果它们位于您的服务器基础架构网络中,那么可以使用类似ARP Poisoning的内容拦截流量 - 此处不需要欺骗受害者的IP。
  • 如果它们介于两者之间(例如政府控制的骨干网连接),那么欺骗IP可能会更加困难,如果不是不可能的话(欺骗IP意味着攻击者无法读取对其数据包的任何回复)因为他们将被送回欺骗性的IP)。

简而言之,使用SSL(或更专业的TLS)。