0Pricing
Stripe Payments & SaaS Billing Systems · Pelajaran

Memverifikasi Tanda Tangan Webhook dengan Aman

Lindungi backend pembayaran Anda dari peristiwa palsu dengan memvalidasi tanda tangan webhook Stripe dan mengikuti praktik endpoint yang aman.

Memverifikasi Tanda Tangan Webhook dengan Aman adalah pelajaran Stripe Payments & SaaS Billing Systems gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Stripe Payments & SaaS Billing Systems, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Stripe Payments & SaaS Billing Systems mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Why Verify Webhooks?

Your webhook endpoint is public. Without verification, an attacker could POST a fake payment_succeeded event and unlock paid features for free.

The Signing Secret

Each webhook endpoint has a signing secret (starts with whsec_). Stripe uses it to sign every event it sends you.

The Stripe-Signature Header

Every webhook request carries a Stripe-Signature header containing a timestamp and an HMAC signature of the payload.

// Stripe-Signature: t=1700000000,v1=5257a8...

Use the Raw Body

Signature verification needs the exact raw request body. If a framework parses JSON first, the bytes change and verification fails.

app.post('/webhook',
  express.raw({ type: 'application/json' }),
  handler
);

Verifying with the SDK

The Stripe SDK does the HMAC math for you via constructEvent.

function verify(rawBody, sig, secret, stripe) {
  return stripe.webhooks.constructEvent(rawBody, sig, secret);
}

Handling Verification Failure

If verification throws, reject the request with a 400. Never process an unverified event.

function process(ok) {
  if (!ok) return { status: 400, body: 'invalid signature' };
  return { status: 200, body: 'received' };
}
console.log(process(false));

Timestamp Tolerance

The signature includes a timestamp. Stripe rejects events older than a tolerance window to block replay attacks with captured payloads.

Constant-Time Comparison

Under the hood, signatures are compared in constant time to avoid timing attacks. The SDK handles this; never hand-roll a simple equality check.

Respond Fast, Process Later

Acknowledge with 200 quickly, then do heavy work asynchronously. Slow responses make Stripe retry and can cause duplicates.

Keep the Secret Safe

Store the signing secret in environment variables, never in source control. Rotate it if it leaks, using the dashboard.

const secret = process.env.STRIPE_WEBHOOK_SECRET;
console.log(Boolean(secret));

Per-Endpoint Secrets

Each registered endpoint has its own secret. Use the correct one for the URL receiving the event, especially across test and live modes.

Quick Check

Why must you use the raw request body for verification?

Recap

You secured your webhook endpoint:

  • Verify the Stripe-Signature with the signing secret
  • Use the raw body and the SDK constructEvent
  • Reject failures and rely on timestamp tolerance against replays
  • Keep secrets in env vars and respond fast

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memverifikasi Tanda Tangan Webhook dengan Aman” gratis?

Ya — teks lengkap “Memverifikasi Tanda Tangan Webhook dengan Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Stripe Payments & SaaS Billing Systems, upgrade ke CoddyKit PRO. Kursus Stripe Payments & SaaS Billing Systems mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memverifikasi Tanda Tangan Webhook dengan Aman”?

Lindungi backend pembayaran Anda dari peristiwa palsu dengan memvalidasi tanda tangan webhook Stripe dan mengikuti praktik endpoint yang aman. Kamu berlatih Stripe Payments & SaaS Billing Systems dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Stripe Payments & SaaS Billing Systems?

Tidak diperlukan pengalaman sebelumnya. Stripe Payments & SaaS Billing Systems di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Memverifikasi Tanda Tangan Webhook dengan Aman” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Stripe Payments & SaaS Billing Systems ini?

Ya. Setiap pelajaran Stripe Payments & SaaS Billing Systems menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menyimpan Metode Pembayaran dengan Aman (Token)
  2. Menerapkan Strong Customer Authentication (SCA)
  3. Praktik Terbaik Kepatuhan PCI bagi Pengembang
  4. Memverifikasi Tanda Tangan Webhook dengan Aman
← Kembali ke Stripe Payments & SaaS Billing Systems