Pengiriman webhook adalah permintaan HTTP dari sistem lain, bukan bukti bahwa pengirim yang diklaim adalah asli. Verifikasi tanda tangan penyedia sebelum mengizinkan payload memicu suatu tindakan.
Periksa keasliannya sebelum diproses
- Baca spesifikasi penandatanganan penyedia saat ini dan verifikasi tanda tangan terhadap isi mentah yang ditentukannya.
- Gunakan perpustakaan kriptografi yang dikelola dan perbandingan waktu konstan untuk byte tanda tangan.
- Tolak tanda tangan yang tidak valid dan tangani perlindungan cap waktu atau pemutaran ulang ketika penyedia mendukungnya.
Harapkan percobaan ulang dan duplikat acara
Penyedia dapat mencoba lagi setelah waktu tunggu habis meskipun aplikasi Anda telah menyelesaikan pekerjaannya. Simpan pengidentifikasi peristiwa yang stabil dan buat pengendalinya idempoten sehingga memproses peristiwa yang sama dua kali tidak mengulangi tindakan yang tidak dapat diubah.
Simpan rahasia penandatanganan di sisi server, rotasikan melalui proses terdokumentasi penyedia, dan catat hanya pengidentifikasi peristiwa dan hasilnya. Jangan pernah menyertakan materi rahasia atau seluruh muatan sensitif dalam laporan kesalahan.
