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

poze 2 months ago438 gadeht

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?

Dyagnostik IA

Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.

poze 2 months ago

1 Repons

4
✓
✓ Repons yo aksepte

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.

Konekte pou di lòt moun si li te mache.

answered 2 months ago

Sign in and verify your email to post an answer.