Webhook请求合法性验证
安全性
为了数据防止被篡改,或由第三方伪装发送webhook请求到应用来,TB会使用应用秘钥对消息体加密,应用在收到webhook请求后,可用应用持有的secret对请求进行检查。
请求检查字段:
X-Signature
应用秘钥
验证方法
-
golang
data := `your data`
secret := "your secret" //应用秘钥
// 根据秘钥对消息body进行sha256加密
signature := crypto.SHA256Hmac([]byte(secret), data)
sign := hex.EncodeToString(signature)
if sign != context.header('X-Signature') {
panic("signature error")
}
// 判断加密后的值是否与一致,如果不一致说明消息被篡改
-
nodejs
const crypto = require('crypto')
const secret = 'your secret'
const data = 'your data'
const hash = crypto.createHmac('sha256', secret).update(data).digest('hex')
// expect: 5550382e95c66eb2f3dc7f2c5c478758b1b451013cfaaa98d3e72b6e0bbb62d
cconsole.log(hash)
最后修改时间: 3 years ago