Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何保护webhook身份_Security_Cryptography_Jwt_Webhooks_Hmac - Fatal编程技术网

Security 如何保护webhook身份

Security 如何保护webhook身份,security,cryptography,jwt,webhooks,hmac,Security,Cryptography,Jwt,Webhooks,Hmac,我正在开发一项服务,客户可以注册他们的webhook URL,我将发送注册URL的更新。为了安全起见,我想让客户机(接收方)识别发送请求的是我(服务器) 两者都发送一个X-Hub-Signature,其中包含以密钥为前缀的有效负载哈希 我可以遵循同样的策略。但是如果我简单地使用jwt: 在注册webhook时,我与客户端共享一个密钥 然后在每个webhook请求中,我将发送一个使用相同密钥计算的jwt 我对密码学了解不多,但jwt方法似乎更有效,因为我不必反复计算签名,因为我没有在签名中使用有效

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

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

我可以遵循同样的策略。但是如果我简单地使用
jwt

  • 在注册webhook时,我与客户端共享一个密钥
  • 然后在每个webhook请求中,我将发送一个使用相同密钥计算的jwt
  • 我对密码学了解不多,但jwt方法似乎更有效,因为我不必反复计算签名,因为我没有在签名中使用有效负载

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

    此网站上的内容可能已过期。要获得最准确和最新的内容,请使用MAC(消息身份验证码)访问,这样就可以按照名称对消息进行身份验证。在每封邮件中发送一个秘密是不明智的,因为这可能会导致秘密被泄露。攻击者可能会截获其中一条消息,然后开始发出伪造消息

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


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

    同意!但是关于
    在每条消息中发送一个秘密是不明智的,因为这可能会导致秘密被泄露我发送的不是简单的秘密。我将发送
    jwt
    。看起来我误读了你的部分问题。JWT包括一个MAC。您需要在MAC/JWT的计算中包含有效负载,否则攻击者可以使用不同的有效负载重用MAC。