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

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