Security Best Practices
API key storage
Store API keys in a secrets manager or environment variables. Never hardcode them in source code.| Approach | Recommended |
|---|---|
| Environment variables | Yes. Minimum acceptable approach. |
| Secrets manager (AWS Secrets Manager, Vault, GCP Secret Manager) | Yes. Preferred for production. |
Configuration file (.env, config.yaml) | Only if gitignored and encrypted at rest. |
| Hardcoded in source code | No. Never. |
| Client-side JavaScript | No. Keys are visible to anyone with browser dev tools. |
| Mobile app bundles | No. APKs and IPAs can be decompiled. |
Key rotation
Rotate API keys on a regular schedule and immediately after any suspected compromise. Planned rotation. Prepare your deployment pipeline before requesting a new key. The old key is revoked the moment the new one is issued. There is no overlap period.Prepare configurations
Update all application configurations and CI/CD secrets to accept the new key.
Transport security
All API communication must use HTTPS. Zenoo does not accept HTTP requests. Use TLS 1.2 or higher.
- Verify server certificates. Do not disable certificate validation in production.
- Pin certificates if your security policy requires it.
IP allowlisting
Contact Zenoo support to configure IP allowlisting for your API keys. When enabled, requests from IPs outside the allowlist are rejected with403 Forbidden.
Considerations:
- Provide the public IP addresses or CIDR ranges of your application servers.
- Update the allowlist before deploying to new infrastructure.
- Cloud-hosted applications with dynamic IPs may need a NAT gateway or static IP assignment.
Webhook endpoint security
Your webhook endpoint receives verification results that may contain personally identifiable information. Protect it accordingly. Verify signatures. Always validate theX-Zenoo-Signature header before processing any webhook payload. See Webhook Signatures for implementation details.
Use HTTPS. Your webhook endpoint must be accessible over HTTPS. Zenoo will not deliver webhooks to HTTP URLs.
Respond quickly. Return 200 OK within 30 seconds. Queue the payload for async processing rather than performing business logic in the request handler.
Log failures. Record every failed signature verification with the timestamp, source IP, and request headers. A pattern of failures may indicate someone is probing or spoofing your endpoint.
Restrict access. If possible, configure your firewall or load balancer to only accept webhook requests from Zenoo’s IP ranges. Contact Zenoo support for the current list.
Monitoring
| Metric | What to watch |
|---|---|
| API error rate by status code | Spike in 401/403 may indicate key compromise or misconfiguration |
5xx error rate | Sustained increase suggests provider or infrastructure issues |
| Webhook delivery success rate | Failures may indicate endpoint issues or network problems |
| Webhook signature verification failures | Repeated failures suggest a misconfigured secret or attack |
| Response latency (p50, p95, p99) | Increasing latency may indicate provider degradation |
5xxerror rate exceeding 5% over a 10-minute window.- Any
401errors (may indicate a rotated or leaked key). - Webhook signature verification failure rate above 0%.
- Average response time exceeding 2x your baseline.
request_id from every API response. When contacting Zenoo support, include this ID to enable fast diagnosis.