Kijan pou m pwoteje yon webhook pou moun pa voye fo notifikasyon?

asked 2 months ago439 viewsht

0

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?

AI diagnosis

AI-generated. Not an answer — the community below confirms or corrects it. Always verify before relying on it.

asked 2 months ago

1 Answer

4
✓
✓ Accepted answer

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.

Sign in to tell others whether this worked.

answered 2 months ago

Sign in and verify your email to post an answer.