GitHub WebHook 自动部署 验证秘钥算法(sha256)PHP版

 将请求数据转换成json字符串,注意加上参数:

JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE

JSON_UNESCAPED_SLASHES:不要编码 /

JSON_UNESCAPED_UNICODE:以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。

本代码写于Laravel框架,其他框架根据实际情况获取请求头和请求数据

/**
 * @param array $data webHook请求数据
 * @param array $header webhook请求头
 * @throws BusinessException 验证错误抛出异常
 */
protected function checkSignature(array $data, array $header)
{
    $secret = 'xxxxxxwebhook设置的secret秘钥xxxxxx';
    if (!empty($header['x-hub-signature-256'][0])) {
        $signature = $header['x-hub-signature-256'][0];
        $hash = "sha256=" . hash_hmac('sha256', json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), $secret);
        if (strcmp($signature, $hash) != 0) {
            throw new BusinessException('异常!' . $hash . '!=' . $signature);
        }
    } else {
        throw new BusinessException('异常!');
    } 
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值