Hydrus.gg
  • Português
    • Jogos
      • FiveM
        • Comandos
          • Créditos
          • vRP
          • QBCore
        • Criando comandos
        • Crédito personalizado
        • Framework personalizado
        • Créditos personalizados
        • Exports
          • add_credit
          • base64_decode
          • base64_encode
          • consume_credit
          • create_command
          • find_order
          • find_product
          • get_group_expiration
          • migrate_player_id
          • random_uuid
          • run
          • schedule
          • sql_insert
          • testdrive
        • Eventos
          • hydrus:vehicle-redeem
          • hydrus:system-notify
          • hydrus:vip-notify
          • hydrus:insert
          • hydrus:inserted
        • Configuração
      • RedM
        • VORP
      • Minecraft
      • Standalone
    • Webhooks
    • Variáveis
    • Layout próprio
    • Temas exclusivos
      • Premium
    • Fast Checkout
    • Bot do Discord
      • Hospedando o Bot
      • Comandos
    • API
      • Autenticação
      • Cupons
Powered by GitBook
On this page
  1. Português

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
})
PreviousStandaloneNextVariáveis

Last updated 2 years ago