# Webhooks और Credentials सुरक्षित करना — n8n के साथ AI Automation

Source: https://www.geekswithgeeks.com/hi/n8n-ai-automation/rel-security

> Webhook calls authenticate करें, signatures जाँचें और encryption key की रक्षा करें।

## सार्वजनिक URL खुला दरवाज़ा है

जिसे webhook URL मिल जाए वह उसे चला सकता है। Webhook node पर **authentication** चालू करें (Header Auth या Basic Auth), या ऐसा **signature** जाँचें जिसे भेजने वाला साझा secret से request body पर निकालता है। Instance की भी रक्षा करें: उसे HTTPS पर चलाएँ, access control के बिना editor सार्वजनिक न करें, और **N8N_ENCRYPTION_KEY** सुरक्षित रखें, क्योंकि database के credentials उसी से encrypted हैं।

## HMAC signature जाँचना

इसे Code node में चलाएँ। `timingSafeEqual` constant समय में तुलना करता है। यह Node.js में चला: SHA-256 hex digest 64 अक्षर का है और अपरिवर्तित body मेल खाती है। असली flow में आप caller के भेजे signature header से तुलना करते हैं, raw body के साथ।

```javascript
const crypto = require("crypto");
const secret = "s3cret";           // from a credential, not hard-coded
const body = '{"event":"paid"}';

const expected = crypto.createHmac("sha256", secret).update(body).digest("hex");
const received = expected;          // in a real flow: the header value
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received));
console.log(expected.length, ok);
```

Output:

```
64 true
```

## Encryption key का backup लें

N8N_ENCRYPTION_KEY खो जाए तो सहेजे credentials decrypt नहीं हो सकते। इसे environment variable से स्पष्ट रूप से सेट करें, password manager में रखें, और Git में कभी commit न करें।

**Quiz:** Webhook node पर authentication चालू करने से क्या रुकता है?

- [ ] Workflow का कभी चलना
- [x] URL जानने वाले किसी भी व्यक्ति द्वारा workflow चलाना
- [ ] JSON का उपयोग
- [ ] Logging

*Answer:* URL जानने वाले किसी भी व्यक्ति द्वारा workflow चलाना. सिर्फ़ वैध credentials या signatures दिखाने वाले callers ही इसे चला सकते हैं।
