Kijan pou m pwoteje yon webhook pou moun pa voye fo notifikasyon?
posée 2 months ago441 vuesht
Sèvis peman an voye yon webhook sou /api/webhook/peman lè yon kliyan peye. Men nenpòt moun ka voye yon POST sou URL sa a epi di "li peye". Kijan pou m verifye se vre sèvis la ki voye l?
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
Bon kesyon, anpil moun bliye sa! Men kouch pwoteksyon yo:
1. Verifye siyati a (HMAC). Pifò sèvis (Stripe, GitHub, elatriye) siyen kò mesaj la ak yon sekrè pataje:
import crypto from 'node:crypto';
function siyatiValab(rawBody, siyatiResevwa, sekre) {
const atann = crypto.createHmac('sha256', sekre).update(rawBody).digest('hex');
const a = Buffer.from(atann), b = Buffer.from(siyatiResevwa ?? '');
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
Itilize kò brit la (raw body), pa JSON ki deja parse, sinon siyati a p ap koresponn.
2. Si sèvis la pa siyen mesaj yo (sa rive ak kèk sèvis lokal): pa fè konfyans kontni webhook la. Sèvi ak li sèlman kòm siyal, epi rele API sèvis la limenm ak ID tranzaksyon an pou konfime estati peman an ak montan an.
3. Idempotans: sove ID chak evènman ou trete. Si menm evènman an rive 2 fwa (sa nòmal ak webhook), pa bay kliyan an 2 fwa.
4. Verifye montan ak monnen an kont kòmand ou an nan baz done a.
5. HTTPS, epi reponn 200 rapid. Fè travay lou yo apre, nan yon job.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.