Engineering1 min read

How to Verify Piisend Webhook Signatures in Production

Learn to secure your event-driven workflows by verifying Piisend webhook signatures. This guide covers HMAC verification, replay protection, and secret rotation with practical Node.js and Python examples.

How to Verify Piisend Webhook Signatures in Production

Section 1

Securing Your Event-Driven Workflows with Piisend Webhooks

Piisend webhooks provide real-time notifications for critical delivery events like bounces, opens, and clicks, enabling robust event-driven workflows. To ensure the integrity and authenticity of these incoming notifications, verifying the webhook's signature is crucial. This prevents malicious actors from injecting fake events into your system, safeguarding your application's logic and data.

Section 2

Understanding HMAC Signature Verification

Piisend signs every webhook payload using a unique secret key and the HMAC-SHA256 algorithm. This generates a signature included in the X-Piisend-Signature header of each request. Your application must recompute this signature using the raw request body and your secret, then compare it to the received signature. A mismatch indicates either tampering or an unauthorized sender.

Section 3

Implementing Verification in Node.js

In Node.js, you'll need to access the raw request body before any parsing middleware. Use the crypto module to compute the HMAC-SHA256 hash. Compare the generated hash with the X-Piisend-Signature header, ensuring a constant-time comparison to mitigate timing attacks. This step is vital for processing delivery events securely.

Section 4

Implementing Verification in Python

Python applications can verify Piisend webhook signatures using the hmac and hashlib modules. Similar to Node.js, ensure you have the raw request body. Compute the HMAC-SHA256 digest and then compare it with the signature provided in the X-Piisend-Signature header. This robust check is essential for handling bounce notifications and other critical events.

Section 5

Protecting Against Replay Attacks and Secret Rotation

Beyond signature verification, consider replay protection by checking a timestamp within the webhook payload and rejecting requests that are too old. For enhanced security, regularly rotate your webhook secrets. Piisend allows you to configure multiple active secrets, enabling a smooth transition without downtime. This multi-layered approach strengthens the security of your event-driven workflows.

Start sending

Ship transactional email in minutes

Create an API key, verify a domain, and send your first message with Piisend.