सुरक्षा
Repomix में एक अंतर्निहित सुरक्षा जांच प्रणाली है जो आपके कोडबेस में संवेदनशील जानकारी का पता लगाती है और आपको AI मॉडल के साथ साझा करने से पहले उन्हें हटाने या संशोधित करने की अनुमति देती है।
सुरक्षा जांच कैसे काम करती है
जब आप Repomix चलाते हैं, तो यह आपके कोडबेस में निम्नलिखित प्रकार की संवेदनशील जानकारी की जांच करता है:
- API कुंजियां और टोकन: AWS कुंजियां, GitHub टोकन, आदि
- क्रेडेंशियल: पासवर्ड, प्रमाणीकरण टोकन
- प्राइवेट कुंजियां: SSH कुंजियां, प्राइवेट कुंजियां
- कॉन्फिगरेशन फाइलें: .env फाइलें, कॉन्फिगरेशन फाइलें जिनमें संवेदनशील जानकारी हो सकती है
सुरक्षा जांच का उपयोग
सुरक्षा जांच डिफॉल्ट रूप से सक्षम है। आप इसे अक्षम कर सकते हैं, लेकिन यह अनुशंसित नहीं है:
repomix --no-security-checkकॉन्फिगरेशन फाइल में सुरक्षा जांच
आप अपने repomix.config.json में भी सुरक्षा जांच को कॉन्फिगर कर सकते हैं:
{
"security": {
"enabled": true
}
}रिमोट रिपॉजिटरी कॉन्फ़िग ट्रस्ट
जब आप --remote के साथ किसी रिमोट रिपॉजिटरी को पैक करते हैं, तो Repomix उस रिपॉजिटरी की कॉन्फ़िग को अविश्वसनीय कोड के रूप में मानता है।
कॉन्फ़िग फ़ाइल कोड क्यों है
एक repomix.config.* केवल डेटा नहीं है:
repomix.config.ts/.js/.mjsलोड होने पर चलाई (execute) जाती है।input.processorsमेल खाने वाली फ़ाइलों पर बाहरी कमांड चलाता है।output.instructionFilePathऔर../का उपयोग करने वाले include पैटर्न रिपॉजिटरी के बाहर की फ़ाइलें पढ़ते हैं।
किसी अनजान रिपॉजिटरी से बिना जाँची हुई कॉन्फ़िग लोड करना इसलिए उसकी Makefile चलाने, या lifecycle scripts वाले किसी पैकेज पर npm install चलाने के तुल्य है।
डिफ़ॉल्ट: रिमोट कॉन्फ़िग कभी लोड नहीं होती
Repomix किसी क्लोन की गई रिपॉजिटरी की कॉन्फ़िग को तब तक अनदेखा करता है जब तक आप स्पष्ट रूप से इसका अनुरोध नहीं करते। आपकी ग्लोबल कॉन्फ़िग और CLI विकल्प फिर भी लागू होते हैं। यदि आप नीचे दिया गया फ़्लैग कभी पास नहीं करते, तो इस सेक्शन की कोई भी बात आपको प्रभावित नहीं कर सकती।
इसे चुनना
# CLI फ़्लैग का उपयोग करके
repomix --remote user/repo --remote-trust-config
# एनवायरनमेंट वेरिएबल का उपयोग करके
REPOMIX_REMOTE_TRUST_CONFIG=true repomix --remote user/repoयह रिमोट कॉन्फ़िग को उतना ही भरोसा देता है जितना आपके द्वारा स्वयं लिखी गई कॉन्फ़िग को मिलता है। इसका उपयोग केवल उन्हीं रिपॉजिटरी के लिए करें जिन पर आप भरोसा करते हैं और जिन्हें आपने जाँच लिया है।
पुष्टि प्रॉम्प्ट
इंटरैक्टिव टर्मिनल पर, Repomix वह कॉन्फ़िग दिखाता है जो चलने वाली है और उसे लोड करने से पहले पूछता है:
| विकल्प | प्रभाव |
|---|---|
| हाँ, सिर्फ़ इस बार | केवल इस रन पर भरोसा करें। |
| हाँ, और इस रिपॉजिटरी के लिए दोबारा न पूछें | निर्णय याद रखें (नीचे देखें)। |
| नहीं (डिफ़ॉल्ट चयन) | कॉन्फ़िग को लोड किए बिना रोक दें। |
आपको दिखाई गई कॉन्फ़िग रिपॉजिटरी के लेखक द्वारा लिखी गई होती है, इसलिए Repomix यह सुनिश्चित करता है कि डिस्प्ले के साथ छेड़छाड़ न की जा सके:
- कंट्रोल और ANSI सीक्वेंस को एस्केप किया जाता है, ताकि कोई कॉन्फ़िग टर्मिनल को दोबारा न रंग सके या चेतावनी को दृश्य से बाहर स्क्रॉल न कर सके।
- बाइडायरेक्शनल और अदृश्य कैरेक्टर्स को एस्केप किया जाता है, ताकि आप जो टेक्स्ट पढ़ें वही टेक्स्ट चले (Trojan Source)।
- आउटपुट को लाइन काउंट और बाइट साइज़ दोनों से सीमित किया जाता है, ताकि कोई पैडेड कॉन्फ़िग चेतावनी को स्क्रीन से बाहर न धकेल सके।
- हर कॉन्फ़िग लाइन को प्रीफ़िक्स किया जाता है, ताकि कोई कॉन्फ़िग Repomix के अपने सेपरेटर या मैसेज की नक़ल न कर सके।
- सिमलिंक अस्वीकार किए जाते हैं। Git सिमलिंक को सुरक्षित रखता है, इसलिए कोई रिपॉजिटरी ऐसी
repomix.config.jsonभेज सकती है जो क्लोन के बाहर इशारा करती हो। Repomix कॉन्फ़िग को क्लोन की गई ट्री के अंदर एक सामान्य फ़ाइल होने के लिए आवश्यक बनाता है — अन्यथा जिन बाइट्स की आपने समीक्षा की, वे वे बाइट्स नहीं होंगी जो चलती हैं।
निर्णय याद रखना
"दोबारा न पूछें" चुनने पर आपकी अस्थायी डायरेक्टरी ($TMPDIR/repomix/trusted-remotes/) के अंतर्गत एक मार्कर स्टोर होता है, जिसे केवल आपका यूज़र अकाउंट पढ़ और लिख सकता है।
यह मार्कर कंटेंट-पिन्ड है: यह उस कॉन्फ़िग का एक हैश रिकॉर्ड करता है जिसे आपने स्वीकृत किया था। यदि वह रिपॉजिटरी बाद में एक अलग कॉन्फ़िग भेजती है, तो हैश मेल नहीं खाता और आपसे दोबारा पूछा जाता है — यह वही मॉडल है जो direnv allow का है।
पिन का दायरा
यह हैश केवल एंट्री कॉन्फ़िग फ़ाइल को कवर करता है। एक .ts / .js कॉन्फ़िग अन्य फ़ाइलों को import कर सकती है, और input.processors बाहरी स्क्रिप्ट चला सकता है; इनमें से किसी का भी हैश नहीं लिया जाता। जिस रिपॉजिटरी पर आप पहले से भरोसा कर चुके हैं, वह एंट्री फ़ाइल के समान बने रहने के दौरान इन चीज़ों को बदल सकती है। यही कारण है कि प्रॉम्प्ट में एक्ज़ीक्यूटेबल कॉन्फ़िग को इस तरह लेबल किया जाता है — "दोबारा न पूछें" को केवल पढ़ी गई फ़ाइल में नहीं, बल्कि रिपॉजिटरी में भरोसे के रूप में लें।
मार्कर अस्थायी डायरेक्टरी में रहते हैं, इसलिए जब आपका OS उसे साफ़ करता है तो निर्णय समाप्त हो जाते हैं। यह जानबूझकर है: "दोबारा पूछें" की ओर एक्सपायर होना सुरक्षित दिशा है।
जब प्रॉम्प्ट छोड़ दिया जाता है
| स्थिति | व्यवहार |
|---|---|
--force पास किया गया | बिना पूछे भरोसा किया जाता है। इस फ़्लैग का मतलब है कि आप परिणाम स्वीकार करते हैं; stderr पर एक सूचना प्रिंट होती है। |
| गैर-इंटरैक्टिव शेल (CI, पाइप्स) | बिना पूछे भरोसा किया जाता है, जिससे मौजूदा ऑटोमेशन बना रहता है। stderr पर एक सूचना प्रिंट होती है। |
| रिपॉजिटरी पहले से भरोसेमंद है | जब तक कॉन्फ़िग नहीं बदलती, बिना पूछे लोड की जाती है। |
एक एब्सोल्यूट --config उपयोग किया गया | क्लोन की गई रिपॉजिटरी की अपनी कॉन्फ़िग कभी लोड नहीं होती, इसलिए पुष्टि करने के लिए कुछ नहीं है। |
| क्लोन में कोई कॉन्फ़िग फ़ाइल नहीं है | भरोसा करने के लिए कुछ नहीं है। |
--stdout के तहत, या जब stdout रीडायरेक्ट किया गया हो, प्रॉम्प्ट दिखाया नहीं जा सकता। Repomix चुपचाप कॉन्फ़िग पर भरोसा करने के बजाय मार्गदर्शन के साथ एक एरर रिपोर्ट करता है।
सिफ़ारिशें
- जब तक आपको रिपॉजिटरी की अपनी कॉन्फ़िग की ज़रूरत न हो,
--remote-trust-configको बंद रखें। - जवाब देने से पहले प्रॉम्प्ट में कॉन्फ़िग को पढ़ें, खासकर
input.processorsऔर किसी भी../पथ को। - जिन रिपॉजिटरी को आप नियंत्रित नहीं करते उनके लिए "हाँ, सिर्फ़ इस बार" को प्राथमिकता दें।
- CI में, याद रखें कि प्रॉम्प्ट आपकी सुरक्षा नहीं कर सकता — जिस रिविज़न को आप पैक करते हैं उसे पिन करें और पहले से समीक्षा करें।
सुरक्षा चेतावनियां
जब Repomix संवेदनशील जानकारी का पता लगाता है, तो यह आपको चेतावनी देगा और आपको विकल्प प्रदान करेगा:
- फाइल को छोड़ें: संवेदनशील फाइल को आउटपुट से बाहर रखें
- संवेदनशील जानकारी को संशोधित करें: संवेदनशील जानकारी को
[REDACTED]से बदलें - जारी रखें: चेतावनी को अनदेखा करें और जारी रखें (अनुशंसित नहीं)
सुरक्षा सर्वोत्तम प्रथाएं
Repomix का उपयोग करते समय सुरक्षा सर्वोत्तम प्रथाओं का पालन करें:
- सुरक्षा जांच सक्षम रखें: सुरक्षा जांच को हमेशा सक्षम रखें
- .env फाइलें: .env फाइलों को .gitignore में जोड़ें
- संवेदनशील फाइलें: संवेदनशील फाइलों को
--ignoreविकल्प के साथ बाहर रखें - कोड समीक्षा: AI के साथ साझा करने से पहले आउटपुट की समीक्षा करें
- सीक्रेट मैनेजमेंट: सीक्रेट मैनेजमेंट टूल का उपयोग करें जैसे AWS Secrets Manager या HashiCorp Vault
सुरक्षा जांच सीमाएं
Repomix की सुरक्षा जांच व्यापक है, लेकिन इसकी कुछ सीमाएं हैं:
- पैटर्न मैचिंग: यह पैटर्न मैचिंग पर निर्भर करता है और सभी संवेदनशील जानकारी का पता नहीं लगा सकता है
- एन्क्रिप्टेड सीक्रेट: यह एन्क्रिप्टेड सीक्रेट का पता नहीं लगा सकता है
- कस्टम फॉर्मेट: यह कस्टम फॉर्मेट में संवेदनशील जानकारी का पता नहीं लगा सकता है
संबंधित संसाधन
- GitHub रिपॉजिटरी प्रोसेसिंग - उन रिपॉजिटरी को पैक करें जिन्हें आपने स्वयं क्लोन नहीं किया है
- कॉन्फिगरेशन -
security.enableSecurityCheckके माध्यम से सुरक्षा जांच कॉन्फिगर करें - कमांड लाइन विकल्प -
--no-security-checkफ्लैग का उपयोग करें - गोपनीयता नीति - Repomix के डेटा हैंडलिंग के बारे में जानें