gpt4 book ai didi

http - 计算HMACs时如何确定HTTP请求参数顺序?

转载 作者:可可西里 更新时间:2023-11-01 16:23:28 28 4
gpt4 key购买 nike

我正在编写一个将使用 HMAC 进行身份验证的 Web 服务。快速概述:HMAC 是使用消息正文和 key 计算的消息摘要。发送方计算 HMAC 并将其附加到请求中,然后接收方使用其存档的 key 计算收到的消息摘要。如果摘要相同,则接收方可以确定消息是由他们声称的人发送的。

我的问题是关于参数顺序的。假设 Web 服务请求具有三个参数 foo、bar 和 baz。 HTTP POST 的主体类似于:

foo=1&bar=2&baz=3&hmac=de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

(本例中的 HMAC 是一个伪造的例子。)

通常 HTTP 参数顺序并不重要,但在计算哈希时,它很重要。服务器是否应该接受原始传入请求,删除“hmac”参数,当然这不是散列计算的一部分,然后对其进行散列?还是应该商定必须遵循的参数顺序才能正确计算哈希值?

前一种方法给服务器端的实现者带来了更多的负担,但它更健壮。我真正想问的是在客户端构建东西的开发人员的期望。他们是否期望无论参数的顺序如何,事情都会正常进行?

最佳答案

我想说的是,你计算出基于该请求体的散列后操作请求体,这对是否接受请求很重要,通常是不好的做法(原因是,我觉得,很明显)。该 HMAC 不应附加到请求正文,而应设置在 GET 参数、cookie 或自定义 header 中。

对于您的第一个建议,这也减轻了服务器端实现者的负担,这是我推荐的路径。

但这就是我,其他人可能对这一切有不同的看法......

关于http - 计算HMACs时如何确定HTTP请求参数顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com