Webhooks
Verificando a integridade com HMAC
É muito importante que você escute apenas webhooks enviados apenas pela Hydrus, portanto, oferecemos uma alternativa de verificar se o webhook é autêntico ou se foi enviado por terceiros.
Todo webhook com secret, será assinado através do header x-hydrus-signature
e pode ser verificado da seguinte forma:
PHP
$body = file_get_contents("php://input");
$ok = hash_hmac('sha256', $body, 'your-secret') === $_SERVER['HTTP_X_HYDRUS_SIGNATURE'];
if (!$ok) {
http_response_code(403);
return;
}
// TODO
Node.JS
Bibliotecas como o Express não possuem ferramentas builtin para prover os dados brutos enviados para seu servidor http, portanto, é necessário uma adaptação no bodyParser.
app.use(bodyParser.json({
verify(req, res, buf) {
req.rawBody = buf
}
}))
const crypto = require('crypto')
function verifyHmac(rawBody, sent) {
const expected = crypto.createHmac('sha256', 'your-secret').update(rawBody).digest('hex')
return expected === sent
}
app.post('/hydrus-webhook', (req, res) => {
if (!verifyHmac(req.rawBody, req.headers['x-hydrus-signature'])) {
return res.status(403)
}
// TODO
})
Last updated