http-headers 和 http-body 之间有啥安全区别吗?

Posted

技术标签:

【中文标题】http-headers 和 http-body 之间有啥安全区别吗?【英文标题】:Is there any security difference between http-headers and http-body?http-headers 和 http-body 之间有什么安全区别吗? 【发布时间】:2019-05-21 16:40:30 【问题描述】:

我要创建一个发布请求并且我正在使用令牌,为什么我必须将令牌放入标头而不是请求正文?我的理解是 body 比 http-headers 更安全吗?

或者将令牌放入标头的唯一原因是为了在我们的 API 中分离并保持多个方法之间的一致性

【问题讨论】:

“更安全”是什么意思? 【参考方案1】:

header 对服务器来说更方便。

想象一个 API,您在其中上传文件作为 PUT 的正文 - 如果令牌也在正文中,您必须以某种方式对正文进行编码,以明确什么是令牌以及上传的文件是什么.

如果正文是 JSON,您可以将令牌放在正文旁边(在这种情况下,您不能只是 JSON.parse 它,您需要再次解码它们如何组合在一起)或者您可以将令牌埋在 JSON 中(在这种情况下,您必须先下载整个 JSON 并对其进行解析,然后才能获取令牌)。

可以在下载正文之前访问标头 - 因此,如果恶意代理通过向您发送大量 100Mb 请求对您的服务器执行 DoS 攻击,您可以在收到标头后立即检测到缺乏适当的授权,并关闭连接,而无需下载和分析 100Mb 有效负载。

我看不到在正文中包含令牌的任何好处,而不是在标题中。

【讨论】:

优秀的答案@Amadan【参考方案2】:

讨论了与在url vs body 中传递数据相关的安全问题。重点是urls 更频繁地被中间服务器记录,因此敏感信息可能会出现在日志中。

如果我们为headers/body 继续这个想法,我建议如果与正文相比,标题更有可能被记录。至少在我们的应用程序中,我们似乎将请求与标头一起记录。

从密码学的角度来看,它们都等同于一起转移。

【讨论】:

以上是关于http-headers 和 http-body 之间有啥安全区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 curl 无法使用选项 -i 显示 http 标头

http-headers头

如果单击超链接,使浏览器提交额外的 HTTP-Header

如何在 Wordpress 中插入 Last-Modified HTTP-header?

Rails 3 HTTP-header If-Modified-Since 使用 curl

PHP DomDocument - 自闭标签和特殊字符