Ein offener Webhook ist ein Sicherheitsrisiko — jeder, der die URL kennt, kann deinen Workflow triggern.
Option A: Header Authentication (empfohlen)
Im Webhook-Node unter "Authentication":
- Wähle "Header Auth"
- Name:
X-API-Key (oder ein beliebiger Header-Name)
- Value: Ein starkes, zufälliges Token (z.B.
sk-abc123xyz456...)
Ab jetzt müssen alle Anfragen diesen Header mitschicken:
curl -X POST https://dein-n8n.com/webhook/mein-webhook \
-H "Content-Type: application/json" \
-H "X-API-Key: sk-abc123xyz456..." \
-d '{"name": "Max"}'
Anfragen ohne gültigen Header werden mit 401 Unauthorized abgewiesen.
Option B: Basic Auth
Im Webhook-Node unter "Authentication" → "Basic Auth":
- Setze Benutzername und Passwort
- Der aufrufende Service muss Base64-kodierte Credentials mitschicken
Option C: IP-Whitelist (nginx/Cloudflare)
Wenn du n8n hinter einem Reverse Proxy (nginx) oder Cloudflare betreibst, kannst du den Webhook-Pfad auf bestimmte IP-Adressen beschränken.
nginx Beispiel:
location /webhook/ {
allow 192.168.1.0/24;
allow 10.0.0.1;
deny all;
proxy_pass http://localhost:5678;
}
💡 Beste Kombination
Für maximale Sicherheit: Header Auth und HTTPS (TLS). Ohne HTTPS ist der API-Key im Klartext übertragen — wertlos. n8n.cloud erledigt das automatisch. Bei Self-Hosted: Let's Encrypt + nginx.