在这种情况下,ID 与令牌配对是否冗余?



我正在做一年前做的一个项目,我实际上忘记了我当时的想法。

我的服务器和客户的服务器之间通过 HTTP POST 进行通信。

我的服务器发送一个列表,告诉客户的服务器我需要哪些数据,每个请求的数据都有一个唯一的ID,客户的服务器发回一个ID,数据对的列表。

例如:我的服务器发送

[{id: 1001, input: 40.2},
{id: 2033, input: 326.4},
{id: 4212, input: 67.12},
{id: 9551, input: 5.3}]

我的客户的服务器响应

[{id: 1001, output: 3144},
{id: 2033, output: 4362},
{id: 4212, output: 6428},
{id: 9551, output: 2319}]

我的客户的服务器可以响应空列表,然后稍后通过另一个 API 发送数据。

为了防止客户的服务器收到虚假请求,我的服务器将发送一个key以及列表。客户可以在控制台页面中看到该密钥,并将其设置到其服务器中。

为防止我们的服务器收到虚假回复或虚假数据提交,客户需要将他们的Customer IDAPI key与回复列表一起发送。他们可以在控制台页面中看到它。

奇怪的是,列表条目不仅有id,而且还有一个随机生成的token。所以列表实际上看起来像这样。

我的服务器发送

[{id: 1001, token: dgkldjktle34512fas, input: 40.2},
{id: 2033, token: gt23k4652bkjte24ks, input: 326.4},
{id: 4212, token: 35wfvjnsl34342ldsa, input: 67.12},
{id: 9551, token: eftrlh44yw3.dflk3r, input: 5.3}]

我的客户的服务器响应

[{id: 1001, token: dgkldjktle34512fas, output: 3144},
{id: 2033, token: gt23k4652bkjte24ks, output: 4362},
{id: 4212, token: 35wfvjnsl34342ldsa, output: 6428},
{id: 9551, token: eftrlh44yw3.dflk3r, output: 2319}]

如果响应数据有错误的令牌,我的服务器将不接受它。

但是现在我很困惑,为什么我需要列表中的令牌?

API key检查已经防止了虚假响应或虚假数据提交。

是无用的冗余吗?还是有我以前想过,但现在忘记了的场景?

令牌可以防止您在没有实际请求任何内容的情况下收到响应,这与CSRF有点相似。但请注意,您可以改进发送密钥进行身份验证的方案。目前,如果我理解正确,中间攻击者(可能是代理,即使在https(tls(的情况下,这始终应该是(可以更改值,而共享密钥可用于应用消息身份验证(例如。HMAC(,以保证数据确实是向任一方向发送的数据。

最新更新