Centre d'aide API et webhooks

Vérifier la signature des webhooks

Chaque requête webhook contient un en-tête InzoPay-Signature avec une signature HMAC-SHA256. Vérifiez-la toujours pour éviter les requêtes usurpées.

Format de la signature

InzoPay-Signature: t=1713000000,v1=abc123def456...

Où t est l'horodatage Unix et v1 le HMAC-SHA256 de {timestamp}.{body}.

Exemple de vérification en PHP

$sigHeader = $_SERVER['HTTP_INZOPAY_SIGNATURE'];
$body      = file_get_contents('php://input');
$secret    = 'whsec_your_signing_secret';

[$tPart, $v1Part] = explode(',', $sigHeader);
$timestamp = substr($tPart, 2);
$received  = substr($v1Part, 3);

$expected = hash_hmac('sha256', $timestamp . '.' . $body, $secret);

if (!hash_equals($expected, $received)) {
    http_response_code(400);
    exit('Invalid signature');
}

// Request is authentic — process the event
$event = json_decode($body, true);

Protection contre le rejeu

Pour éviter les attaques par rejeu, rejetez les requêtes dont l'horodatage date de plus de 5 minutes :

if (abs(time() - (int)$timestamp) > 300) {
    http_response_code(400);
    exit('Timestamp too old');
}
Cet article vous a-t-il été utile ?