
स्थानीय Git प्री-पुश हुक और फ़ाइलसिस्टम स्कैनर जो संभावित सीक्रेट लीक का पता लगाता है, मिलान किए गए मानों को रिडैक्ट करता है, और बिना टेलीमेट्री या नेटवर्क एक्सेस के पुश को ब्लॉक करता है।
Push Guard संभावित सीक्रेट लीक के लिए एक स्थानीय Git pre-push गार्ड है।
यह पुश किए जा रहे कंटेंट को स्कैन करता है, संभावित सीक्रेट पैटर्न की रिपोर्ट करता है, सभी मेल खाते मानों को रीडैक्ट करता है, और नॉनज़ीरो के साथ एक्ज़िट करता है ताकि Git पुश को ब्लॉक कर दे।
Dragon Lady द्वारा निर्मित और अनुरक्षित - github.com/Dragon-Lady - X: @answerislove2
संस्करण 0.4.3 इनलाइन # push-guard: ignore अपवाद को हटा देता है। अपग्रेड करने पर ऐसे पुश और पैकेज ब्लॉक होने शुरू हो सकते हैं जो पहले पास हो जाते थे। साझा हुक या CI इंस्टॉलेशन को अपग्रेड करने से पहले, प्रत्येक उपभोग करने वाले रिपॉज़िटरी का निरीक्षण करें:
git grep -n -i 'push-guard:[[:space:]]*ignore'
प्रत्येक मिलान की समीक्षा करें। सीक्रेट्स और निजी सामग्री हटाएँ; इनमें से किसी को भी छूट नहीं दी जा सकती।
वैध workflow/IOC फ़िक्स्चर के लिए, केवल समीक्षित, सटीक रिपॉज़िटरी
पथ और सटीक workflow.* नियम ID को .push-guard-allow में जोड़ें। इनलाइन मार्कर अब
सामान्य टेक्स्ट हैं, जिनमें परीक्षणों या दस्तावेज़ीकरण में मौजूद मार्कर भी शामिल हैं। सभी मार्कर पंक्तियों को
स्वचालित रूप से अनुमतियों में न बदलें। किसी भी नई अनुमति की
सुरक्षा-संवेदनशील परिवर्तन के रूप में समीक्षा करें।
pre-push हुक अपवादों को गंतव्य के विज्ञापित बेस कमिट से पढ़ता है, कभी भी कार्यशील प्रति या उम्मीदवार कमिट से नहीं। किसी नई या विस्तारित अनुमति की समीक्षा और स्थापना अलग से होनी चाहिए, तभी वह किसी बाद के पुश को छूट दे सकती है। मल्टी-रेफ़ पुश के लिए, केवल वे अपवाद लागू होते हैं जो हर गंतव्य बेस में साझा हों। विज्ञापित बेस के बिना नए रेफ़्स को कोई अपवाद नहीं मिलता।
scan भी नीति को --base से पढ़ता है। जब किसी बड़ी ऐतिहासिक
रेंज का ऑडिट अलग से समीक्षित नीति स्नैपशॉट के विरुद्ध कर रहे हों, तो स्पष्ट रूप से
--allow-list-ref <reviewed-40-character-commit-SHA> पास करें। यह कॉलर द्वारा लिया गया एक स्पष्ट विश्वास
निर्णय है; कभी भी असमीक्षित उम्मीदवार की नीति को प्रतिस्थापित न करें।
scan-package कॉलर द्वारा चुनी गई --repo नीति का उपयोग जारी रखता है, आर्टिफ़ैक्ट के बाहर।
अविश्वसनीय बिल्ड्स को स्कैन करते समय समीक्षित नीति निर्देशिका प्रदान करें।
इंस्टॉल किए गए हुक को अपग्रेड करने से पहले, वास्तविक आउटगोइंग परिवर्तनों और बिल्ट
आर्टिफ़ैक्ट्स के विरुद्ध नए संस्करण का push-guard scan --base <trusted-base> --head HEAD और
push-guard scan-package dist/* चलाएँ। आर्काइव सदस्य पथ स्रोत पथों से भिन्न हो सकते हैं; उन सटीक पथों की
अलग से समीक्षा करें। प्रभावित रिपॉज़िटरी द्वारा यह माइग्रेशन पूरा होने तक
मौजूदा इंस्टॉल किए गए संस्करण को बनाए रखें।
सार्वजनिक लैंडिंग पेज: push-guard.netlify.app
स्थिर प्रोजेक्ट लैंडिंग पेज docs/ में स्थित है और इसमें कोई रनटाइम
निर्भरता, बाहरी स्क्रिप्ट, एनालिटिक्स, या रिमोट एसेट्स नहीं हैं। इसे docs/ निर्देशिका से GitHub Pages के साथ
सर्व किया जा सकता है या शामिल netlify.toml का उपयोग करके Netlify पर डिप्लॉय किया जा सकता है
(कोई बिल्ड कमांड नहीं; प्रकाशन निर्देशिका docs)।
वर्तमान Netlify प्रोजेक्ट मैन्युअल डिप्लॉय का उपयोग करता है। केवल Git पुश से सार्वजनिक पेज
अपडेट नहीं होता: प्रत्येक रिलीज़ के बाद docs/ की सामग्री प्रकाशित करें और
लाइव संस्करण, सोशल इमेज, और रिस्पॉन्स हेडर जाँचें। docs/_headers
फ़ाइल उस निर्देशिका को सीधे डिप्लॉय करते समय सुरक्षा हेडर बनाए रखती है।
--send विकल्प कॉन्फ़िगर किए गए गंतव्यों को समग्र
अलर्ट सक्षम करता है; Git गार्ड ऑफ़लाइन रहता है।git सबप्रोसेस का उपयोग केवल कमिट डिफ़्स, पुश किए गए ट्री,
कॉन्फ़िगर किए गए हुक पथ, और इग्नोर मेटाडेटा पढ़ने के लिए करता है। मौजूदा हुक एंट्री पॉइंट को
संरक्षित रखा गया है, साथ ही रॉ-कंटेंट और आउटगोइंग-हिस्ट्री निरीक्षण को सुदृढ़ किया गया है।$HOME के अंदर चयनित फ़ाइलें पढ़ता है, और कोई चाइल्ड
प्रोसेस निष्पादित नहीं करता, Git सहित।$XDG_STATE_HOME/push-guard-sweep/fp.key (डिफ़ॉल्ट
~/.local/state/push-guard-sweep/fp.key) पर एक यादृच्छिक 32-बाइट HMAC कुंजी बनाता है।
यह कुंजी "डिफ़ॉल्ट रूप से कोई डेटा संग्रहीत नहीं" का स्पष्ट अपवाद है। इसमें
कोई स्कैन किया गया डेटा नहीं है। स्टेट निर्देशिका 0700 है और फ़ाइलें 0600 पर बनाई जाती हैं।--baseline और --output फ़ाइलों में रिडैक्टेड स्थानीय मेटाडेटा होता है;
--send कुंजीबद्ध डीडुप्लिकेशन रसीदें संग्रहीत करता है, कभी भी अलर्ट क्रेडेंशियल या सीक्रेट्स नहीं।पुश को ब्लॉक करना सलाह के प्रति Git की प्रतिक्रिया है। Push Guard केवल-पढ़ने योग्य
रहता है और फ़ाइलों को परिवर्तित नहीं करता। जब मिलान किया गया मान ज्ञात रूप से सीक्रेट न हो, तो
git push --no-verify के साथ ओवरराइड उपलब्ध है।
push-guard sweep कमांड और push-guard-sweep उपनाम समान स्थानीय निरीक्षण प्रदान करते हैं। इनके लिए मौजूदा पैकेज के Python 3.11 या नए संस्करण की आवश्यकता होती है और इनकी कोई अतिरिक्त रनटाइम निर्भरता नहीं है। विकास परीक्षण वैकल्पिक test एक्स्ट्रा का उपयोग करते हैं (python -m pip install ".[test]", फिर रिपॉज़िटरी रूट से PYTHONPATH=src python -m pytest -q)। 0.4.0 रिलीज़ Sweep जोड़ती है। CI उस विकास एक्स्ट्रा को इंस्टॉल करता है और पूरे pytest सूट को चलाता है, जिसमें लेगेसी unittest केस भी शामिल हैं। रिलीज़ परीक्षण एक अलग जॉब में चलते हैं; वह जॉब कभी भी प्रकाशन के लिए वितरण आर्टिफ़ैक्ट प्रदान नहीं करता। आर्टिफ़ैक्ट-बिल्ड जॉब परीक्षण निर्भरताएँ इंस्टॉल नहीं करता। Sweep किसी शेड्यूलर को इंस्टॉल या सक्षम नहीं करता।
push-guard sweep --list-targets
push-guard sweep --roots ~/projects --class stray
push-guard-sweep --format json --output ~/sweep-report.json
push-guard-sweep --baseline ~/sweep-baseline.json
push-guard-sweep report --format html --output ~/sweep-report.html
push-guard-sweep print-timer --interval 7d
प्रत्येक स्कैन नीचे दिए गए डिफ़ॉल्ट history, dotfile, configuration और log स्थानों पर भी विचार करता है। --roots .env* और custom-include खोज रूट्स को बदलता है; अन्य डिफ़ॉल्ट सेटों को सीमित करने के लिए --exclude का उपयोग करें। बार-बार दिया गया --include GLOB मौजूदा सीमित खोजों के भीतर फ़ाइलें जोड़ता है, और बार-बार दिया गया --exclude GLOB पथों को हटाता है। Globs basenames, HOME-relative paths, या absolute paths से मेल खाते हैं। Excludes प्राथमिकता लेते हैं; includes safety exclusions या depth limits को ओवरराइड नहीं कर सकते। CLI path arguments में ~ का विस्तार किया जाता है। स्कैन किए गए पथ $HOME के भीतर ही रहने चाहिए।
.lesshst। SQLite shell history text डेटाबेस फ़ाइलों से अलग है।.bashrc, .zshrc, .profile, .bash_profile, .npmrc, और
.docker/config.json; .config के अंतर्गत चयनित JSON, TOML, YAML, INI और CONF फ़ाइलें
जो इसके अधिकतम चार directory levels नीचे हों।.env* फ़ाइलें: चयनित roots (डिफ़ॉल्ट HOME) के अंतर्गत, अधिकतम छह directory
levels। Dependency trees, virtual environments, Git metadata और caches को इस खोज से
बाहर रखा गया है।.log फ़ाइलें और logs/ के भीतर की फ़ाइलें, .local/state, .cache, .codex,
.config/Cursor/logs और कॉन्फ़िगर किए गए log_dirs के अंतर्गत अधिकतम चार directory levels।