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

Posted

技术标签:

【中文标题】在这种情况下,ID 是不是与令牌冗余配对?【英文标题】:Is ID paired with token redundant in this case?在这种情况下,ID 是否与令牌冗余配对? 【发布时间】:2020-02-08 15:27:21 【问题描述】:

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

我的服务器和我客户的服务器之间通过 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 检查已防止虚假响应或虚假数据提交。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于在这种情况下,ID 是不是与令牌冗余配对?的主要内容,如果未能解决你的问题,请参考以下文章

手机蓝牙配对失败是否与蓝牙SOC芯片有关?

else是和之前与其最近的且不带else的if配对,有种情况我不太明白

与 Nrf UART 的蓝牙配对无法正常工作

无需配对即可获取设备位置的蓝牙库

与 Tmux 和 Ngrok 配对

对象推送到蓝牙而不配对