Ogni notifica webhook inviata da xMenu include una firma di sicurezza che ti permette di verificarne l’autenticità.
Ogni richiesta webhook contiene il seguente header:
X-Xmenu-Signature: <hmac-sha256-signature>
La firma è un hash HMAC-SHA256 del payload della richiesta, calcolato utilizzando il tuo Webhook Secret.
Webhook Secret
Puoi trovare il tuo Webhook Secret nel pannello ristorante alla voce Strumenti > Accesso API.
Validazione della Firma
Per verificare che una notifica webhook sia autentica:
- Recupera l’header
X-Xmenu-Signature dalla richiesta in arrivo
- Calcola l’hash HMAC-SHA256 del body della richiesta usando il tuo Webhook Secret
- Confronta l’hash calcolato con la firma presente nell’header
- Rifiuta la richiesta se le firme non corrispondono
Esempi di Codice
<?php
$webhook_secret = 'your-webhook-secret';
$req_headers = getallheaders();
$signature = $req_headers['X-Xmenu-Signature'];
$payload = file_get_contents('php://input');
$calc_hmac = hash_hmac('sha256', $payload, $webhook_secret);
if ($signature !== $calc_hmac) {
header('HTTP/1.0 401 Unauthorized');
exit('Webhook signature is not valid!');
}
$data = json_decode($payload);
// Elabora la notifica webhook
Valida sempre la firma del webhook prima di elaborare qualsiasi dato. Non fidarti mai delle richieste webhook in arrivo senza verifica.