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
- Menyimpan Metode Pembayaran dengan Aman (Token)
- Menerapkan Strong Customer Authentication (SCA)
- Praktik Terbaik Kepatuhan PCI bagi Pengembang
- Memverifikasi Tanda Tangan Webhook dengan Aman