【问题标题】:How to secure webhook identity如何保护 webhook 身份
【发布时间】:2017-04-04 15:42:17
【问题描述】:

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

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

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

  1. 在注册 webhook 时,我与客户端共享一个密钥。
  2. 然后在每个 webhook 请求中,我将发送一个使用相同密钥计算的 jwt。

我对密码学知之甚少,但 jwt 方法似乎更有效,因为我不必一次又一次地计算签名,因为我没有在签名中使用有效负载。

但是为什么 Facebook 和 GitHub 都采用另一种方法呢?

本网站上的内容可能已过时。有关最准确和最新的内容,请访问

【问题讨论】:

    标签: security cryptography jwt webhooks hmac


    【解决方案1】:

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

    您可能要考虑的另一件事是重放攻击。如果攻击者截获一条消息并稍后发送相同的消息怎么办?

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

    【讨论】:

    • 同意!但关于Sending a secret with every message is not wise, as this is likely to result in the secret being compromised. ,我并没有发送普通的秘密。我将发送jwt
    • 看来我误读了您的部分问题。 JWT 包含一个 MAC。您需要在 MAC/JWT 的计算中包含有效负载,否则攻击者可以使用不同的有效负载重用 MAC。
    猜你喜欢
    • 2018-10-14
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2020-05-10
    相关资源
    最近更新 更多