【发布时间】:2019-05-21 16:40:30
【问题描述】:
我要创建一个发布请求并且我正在使用令牌,为什么我必须将令牌放入标头而不是请求正文?我的理解是 body 比 http-headers 更安全吗?
或者将令牌放入标头的唯一原因是为了在我们的 API 中分离并保持多个方法之间的一致性
【问题讨论】:
-
“更安全”是什么意思?
标签: rest http https http-headers
我要创建一个发布请求并且我正在使用令牌,为什么我必须将令牌放入标头而不是请求正文?我的理解是 body 比 http-headers 更安全吗?
或者将令牌放入标头的唯一原因是为了在我们的 API 中分离并保持多个方法之间的一致性
【问题讨论】:
标签: rest http https http-headers
header 对服务器来说更方便。
想象一个 API,您在其中上传文件作为 PUT 的正文 - 如果令牌也在正文中,您必须以某种方式对正文进行编码,以明确什么是令牌以及上传的文件是什么.
如果正文是 JSON,您可以将令牌放在正文旁边(在这种情况下,您不能只是 JSON.parse 它,您需要再次解码它们如何组合在一起)或者您可以将令牌埋在 JSON 中(在这种情况下,您必须先下载整个 JSON 并对其进行解析,然后才能获取令牌)。
可以在下载正文之前访问标头 - 因此,如果恶意代理通过向您发送大量 100Mb 请求对您的服务器执行 DoS 攻击,您可以在收到标头后立即检测到缺乏适当的授权,并关闭连接,而无需下载和分析 100Mb 有效负载。
我看不到在正文中包含令牌的任何好处,而不是在标题中。
【讨论】:
讨论了与在url vs body 中传递数据相关的安全问题。重点是urls 更频繁地被中间服务器记录,因此敏感信息可能会出现在日志中。
如果我们为headers/body 继续这个想法,我建议如果与正文相比,标题更有可能被记录。至少在我们的应用程序中,我们似乎将请求与标头一起记录。
从密码学的角度来看,它们都等同于一起转移。
【讨论】: