钉钉的自定义机器人发消息有三种方式,设置自定义关键词、加签(使用签名加密)和 IP 地址(段)。通过这些方法,可以有效保护你的机器人不受恶意攻击,这里主要记录一下加签的方式
获得签名核心代码
$secret = 'you secret';
$time = $time * 1000;
$str = $time."\n".$secret;
$sign = hash_hmac('sha256',$str,$secret,true);
$sign = urlencode(base64_encode($sign));
将时间戳 timestamp 和密钥 secret 当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)
有几个点需要注意
1 timestamp是毫秒
2 时间戳和密钥连接的中间拼接了一个换行
3 hash_hmac第四个参数需要设置为true输出原始二进制数据