Php 什么阻止MIM发送加密的API令牌

Php 什么阻止MIM发送加密的API令牌,php,authentication,Php,Authentication,我试图理解如何使用API令牌对服务器的请求进行身份验证。我理解令牌随每个请求一起发送的一般概念,并将其与存储在某种会话中的令牌进行比较,以验证请求。我也知道令牌永远不应该“在野外”发送,所以它通常使用SSL加密 我不明白的是它如何阻止中间人的攻击。考虑下面的情况。 比如说,我登录到某个系统,想更改我的电子邮件。当我登录时,会为我生成一个令牌,假设该令牌=1234。假设我发送以下命令 为了简单起见,让我们假设newemail@live.com=xyz(通过SSL加密),evilemail@live

我试图理解如何使用API令牌对服务器的请求进行身份验证。我理解令牌随每个请求一起发送的一般概念,并将其与存储在某种会话中的令牌进行比较,以验证请求。我也知道令牌永远不应该“在野外”发送,所以它通常使用SSL加密

我不明白的是它如何阻止中间人的攻击。考虑下面的情况。 比如说,我登录到某个系统,想更改我的电子邮件。当我登录时,会为我生成一个令牌,假设该令牌=1234。假设我发送以下命令

为了简单起见,让我们假设newemail@live.com=xyz(通过SSL加密),evilemail@live.com=abc(通过SSL加密)和1234=4321(通过SSL加密)

所以MIM收到了类似的消息

是什么阻止MIM得到这个并将其更改为?难道服务器不只是将4321解密为1234,说它匹配并将电子邮件更新为evilemail@live.com?


注意:我没有传递用户ID,因为它存储在服务器上的会话变量中。

SSL发生在TCP层。整个请求将被加密,因此对手不能只交换比特和片段。

SSL发生在TCP层。整个请求都将被加密,因此对手不能只交换比特和碎片。

当用户登录时,会为他们制作一个令牌<代码>1234将是唯一的“newemail@live.com“因此不匹配”evilemail@live.com“。我投票结束这个问题,因为security.stackexchange.com是询问通用安全体系结构问题的更好地方。编程问题也是如此,您还没有发布任何代码。另外请注意,SSL上的通信从您的浏览器到服务器之间是完全加密的。除非MITM拥有解密连接的密钥,否则他们将无法访问传递的get参数。因此,MITM将无法获取电子邮件/令牌来修改它。当用户登录时,将为他们制作一个令牌<代码>1234将是唯一的“newemail@live.com“因此不匹配”evilemail@live.com“。我投票结束这个问题,因为security.stackexchange.com是询问通用安全体系结构问题的更好地方。编程问题也是如此,您还没有发布任何代码。另外请注意,SSL上的通信从您的浏览器到服务器之间是完全加密的。除非MITM拥有解密连接的密钥,否则他们将无法访问传递的get参数。因此,MITM将无法获取电子邮件/令牌来修改它。