Digital Transformation

Webhook Signature

Vito Atmo
Vito Atmo·27 April 2026·2 kali dibaca·2 min baca

TL;DR: Webhook Signature adalah HMAC SHA-256 yang dikirim provider (Stripe, Midtrans, Xendit) di header request, sehingga endpoint Anda bisa memastikan webhook benar dari mereka. Tanpa verifikasi signature, endpoint webhook Anda terbuka untuk siapa saja yang menebak URL-nya.

Apa itu Webhook Signature?

Webhook adalah callback HTTP yang dikirim dari sistem A ke sistem B saat sebuah event terjadi. Karena URL webhook publik, siapa pun yang tahu URL-nya bisa mengirim request palsu. Signature memecahkan masalah ini: provider menandatangani payload dengan secret yang hanya diketahui mereka dan Anda, lalu mengirim hash di header. Server Anda menghitung ulang hash, jika cocok berarti payload sah.

Cara Verifikasi

TahapAksi
Ambil headerBaca X-Signature atau header serupa
Hitung HMACHMAC_SHA256(secret, raw_body)
BandingkanPakai crypto.timingSafeEqual agar aman dari timing attack
Cek timestampTolak request lebih lama dari 5 menit (anti replay)

Selalu pakai raw body, bukan body yang sudah di-parse JSON, karena perubahan whitespace bisa membatalkan hash.

Kenapa Penting?

Tim marketing yang sudah pakai event-driven marketing automation atau menerima webhook pembayaran wajib memvalidasi signature. Tanpa verifikasi, attacker bisa kirim webhook palsu yang memicu email "pembayaran berhasil" ke pelanggan, atau membuat status pesanan tidak konsisten. Praktik idempotency dan signature verification adalah dua pondasi sistem webhook yang tahan kesalahan.

Pertanyaan Umum

Apakah HTTPS saja cukup?

Tidak. HTTPS mengenkripsi pengiriman, tapi tidak membuktikan pengirim sah. Signature membuktikan asal payload.

Bagaimana kalau signature mismatch?

Tolak request dengan HTTP 401 dan log untuk audit. Jangan eksekusi side effect apa pun sebelum signature valid.

Bagikan