# secrets हुक: हार्डकोड किए गए सीक्रेट पकड़ें

> कमांड लाइन से कोडबेस को स्कैन करके हार्डकोड किए गए क्रेडेंशियल खोजें।

कैनोनिकल: https://lagune.ai/hi-IN/docs/hooks/secrets
भाषा: hi-IN
मूल: https://lagune.ai/docs/hooks/secrets
आख़िरी अपडेट: 2026-11-06

`secrets` हुक ऐसे **क्रेडेंशियल पकड़ता है जो सोर्स कोड में ही लिख दिए गए हैं**, बजाय एनवायरनमेंट से पढ़े जाने के। यह मान की सामग्री को नहीं, उसके **स्रोत** को देखता है (लिटरल है या एनवायरनमेंट से पढ़ा गया मान), इसलिए इसे सर्विस प्रोवाइडर के प्रीफ़िक्स की कोई पूरी सूची नहीं चाहिए, और फ़ॉल्स पॉज़िटिव लगभग नहीं के बराबर आते हैं। यही [`secrets` विशेषज्ञता](https://lagune.ai/hi-IN/docs/catalog) के पीछे का नियतात्मक इंजन है।

प्रोवाइडर फ़ॉर्मैट के सिग्नेचर, कनेक्शन स्ट्रिंग में लिखे क्रेडेंशियल, और सीक्रेट जैसे नाम वाले आइडेंटिफ़ायर को दिया गया लिटरल, ये सब **भाषा से स्वतंत्र** हैं: एक ही स्ट्रिंग हर फ़ाइल में एक जैसी पढ़ी जाती है। सिंटैक्स पर निर्भर दो अनुमान, यानी हार्डकोड किए गए डिफ़ॉल्ट वाला एनवायरनमेंट लुकअप और लॉग सिंक तक पहुँचने वाला सीक्रेट, **भाषा को समझते हैं**, इसलिए JavaScript का `console.log` कभी किसी Rust फ़ाइल में नहीं खोजा जाता, और Python का `os.getenv("X", "default")` उसके अपने रूप में पहचाना जाता है।

## चलाएँ

```bash
npx lagune read secrets                  # scans the whole project
npx lagune read secrets --dir src        # scans a directory
npx lagune read secrets --file config.ts # scans a single file
```

स्कैन ज़्यादा से ज़्यादा दो सेक्शन प्रिंट करता है। **Hardcoded secrets found** निष्कर्षों का सेट है (सीक्रेट जैसे नाम वाले एनवायरनमेंट वेरिएबल का हार्डकोड किया गया डिफ़ॉल्ट, कनेक्शन स्ट्रिंग में लिखा क्रेडेंशियल, या चुने हुए प्रोवाइडर फ़ॉर्मैट से मेल खाता मान), इसलिए हुक नॉन-ज़ीरो कोड के साथ बाहर निकलता है। **Secret handling to review manually** सुरागों का सेट है: सीक्रेट जैसे नाम वाले आइडेंटिफ़ायर को दिया गया सादा लिटरल (उसका स्रोत तय किया जा सकता है, पर मान सच में सीक्रेट है या नहीं, यह नहीं), और लॉग या रिस्पॉन्स सिंक तक पहुँचने वाला सीक्रेट जैसे नाम वाला मान। कुछ न मिलने पर यह `no hardcoded secrets found` प्रिंट करता है।

### CLI विकल्प

| विकल्प   | मान           | विवरण                                                                                             |
| -------- | ------------- | ------------------------------------------------------------------------------------------------- |
| `--dir`  | एक डायरेक्टरी | स्कैन को एक डायरेक्टरी तक सीमित करें। इसे दोहराया जा सकता है और `--file` के साथ जोड़ा जा सकता है। |
| `--file` | एक फ़ाइल      | स्कैन को एक फ़ाइल तक सीमित करें। इसे दोहराया जा सकता है और `--dir` के साथ जोड़ा जा सकता है।       |

कोई विकल्प न देने पर यह पूरे प्रोजेक्ट को स्कैन करता है।

### क्या स्कैन हो, यह चुनें

**Git** जिन चीज़ों को अनदेखा करता है, यह उन्हें छोड़ देता है। और चीज़ें छोड़ने के लिए, या **Git** की अनदेखी की गई चीज़ों को भी स्कैन करने के लिए, `secrets` को उसकी अपनी सेटिंग दें:

```bash
npx lagune write add --ignore test/fixtures --checker secrets
```

```json
{
  "checkers": {
    "secrets": { "gitignore": false, "ignore": ["test/fixtures"] }
  }
}
```

[हुक कॉन्फ़िगर करें](https://lagune.ai/hi-IN/docs/hooks/configure) पेज पर हर सेटिंग की जानकारी है।

### भाषाओं का कवरेज

एनवायरनमेंट डिफ़ॉल्ट वाला निष्कर्ष और लॉग सिंक वाला सुराग हर भाषा के अपने तय रूप पढ़ते हैं, इसलिए ये नीचे दी गई भाषाओं को कवर करते हैं और बाकी जगह कुछ नहीं बताते। बाकी तीन संकेत **हर** फ़ाइल पर चलते हैं।

| संकेत                 | भाषाएँ                                                                          |
| --------------------- | ------------------------------------------------------------------------------- |
| एनवायरनमेंट डिफ़ॉल्ट  | JavaScript/TypeScript, Python, Ruby, PHP, Kotlin, Java, Go (`cmp.Or`), Rust, C# |
| लॉग या रिस्पॉन्स सिंक | JavaScript/TypeScript, Python, Ruby, PHP, Java, Kotlin, Go, Rust, C, C++, C#    |

**क्या यह किसी नीति के ख़िलाफ़ है?**

नहीं। किसी सीक्रेट का फ़ॉर्मैट पहचानकर यह चेतावनी देना कि वह कमिट हो गया है, एक आम रक्षात्मक टूल का काम है, ठीक वही जो gitleaks, trufflehog और GitHub push-protection करते हैं। हुक में सिर्फ़ पहचानने वाले सिग्नेचर (टोकन के सार्वजनिक **फ़ॉर्मैट**) होते हैं, कोई असली सीक्रेट कभी नहीं, और यह सीक्रेट को बाहर भेजने के बजाय ऑडिट करता है और समझाता है।

## अक्सर पूछे जाने वाले सवाल

### secrets हुक फ़ॉल्स पॉज़िटिव से कैसे बचता है?

यह मान की सामग्री को नहीं, उसके स्रोत को देखता है। ज़्यादा भरोसे वाले फ़ॉर्मैट (प्रोवाइडर टोकन, एनवायरनमेंट के डिफ़ॉल्ट मान, कनेक्शन स्ट्रिंग) निष्कर्ष होते हैं, जिन पर हुक नॉन-ज़ीरो कोड के साथ बाहर निकलता है। सीक्रेट जैसे नाम वाले आइडेंटिफ़ायर को दिया गया सादा लिटरल समीक्षा का एक सुराग है, जिसकी पुष्टि करनी होती है, और वही आइडेंटिफ़ायर अगर process.env से पढ़ा जाए, तो उसे बिल्कुल नहीं पकड़ा जाता।
