Webhook Security
Learn how to secure your webhook implementation and verify webhook authenticity.
Signature Verification
MangoForm signs webhook payloads with a secret key using HMAC-SHA256. You should verify this signature to ensure the webhook is legitimate.
// Example signature verification in Node.js
const crypto = require('crypto');
const express = require('express');
const app = express();
// Use raw body for signature verification
app.use(express.json({
verify: (req, res, buf) => {
req.rawBody = buf;
}
}));
app.post('/webhook/mangoform', (req, res) => {
const signature = req.headers['x-mangoform-signature'];
const webhookSecret = 'your_webhook_secret'; // Get this from your webhook settings
// Create expected signature
const hmac = crypto.createHmac('sha256', webhookSecret);
const expectedSignature = hmac.update(req.rawBody).digest('hex');
// Compare signatures
if (signature !== expectedSignature) {
console.error('Invalid webhook signature');
return res.status(403).send('Invalid signature');
}
// Process the webhook event
const event = req.body;
console.log('Received verified webhook:', event);
res.status(200).send('Webhook received');
});
app.listen(3000, () => {
console.log('Webhook server running on port 3000');
});
Detailed Security Guide Coming Soon
We're working on a comprehensive security guide for webhooks. Check back soon for detailed best practices and implementation examples.
Security Best Practices
Follow these best practices to ensure your webhook implementation is secure:
Always Verify Signatures
Always verify the signature of incoming webhooks to ensure they are coming from MangoForm.
Use HTTPS
Always use HTTPS for your webhook endpoint to ensure data is encrypted in transit.
Keep Secrets Secure
Store your webhook secret securely and never expose it in client-side code.
Implement Timeouts
Set appropriate timeouts for webhook processing to prevent long-running operations.
Validate Payload
Always validate the webhook payload structure before processing it.