如何保护webhook身份

时间:2016-11-21 09:35:23

标签: security cryptography jwt webhooks hmac

我正在开发一项服务,客户可以在其中注册他们的webhook网址,我将在已注册的网址上发送更新。为了安全起见,我想让客户端(接收方)识别出我的(服务器)向他们发送请求。

FacebookGithub都发送一个X-Hub-Signature,其中包含前缀为密钥的有效内容的哈希值。

我可以遵循相同的策略。但是,如果我只使用jwt

,该怎么办?
  1. 在注册webhook时,我与客户共享密钥。
  2. 然后在每个webhook请求中,我将发送一个使用相同密钥计算的jwt。
  3. 我对密码学知之甚少,但jwt方法似乎更有效,因为我不必一次又一次地计算签名,因为我没有在签名中使用有效负载。

    但是为什么facebook和github都遵循另一种方法?

1 个答案:

答案 0 :(得分:1)

使用MAC(消息验证代码)允许用户验证消息,如名称所暗示的那样。发送每条消息的秘密并不明智,因为这可能导致秘密被泄露。攻击者可能拦截其中一条消息,然后开始发出欺骗性消息。

您可能想要考虑的另一件事是重播攻击。如果攻击者拦截邮件并稍后发送相同的邮件会怎样?

编辑:使用JWT很好,因为它包含MAC,但您必须确保有效负载经过身份验证(即包含在MAC的计算中)。