
redact v0.2.2
स्वतंत्र-रूप स्ट्रिंग्स से क्रेडेंशियल-जैसी सामग्री को हटाएँ, इससे पहले कि वे लॉग या टेलीमेट्री तक पहुँचें। phpboyscout Go टूलकिट का हिस्सा। · https://redact.go.phpboyscout.uk
redact
लॉग, टेलीमेट्री, या किसी भी तृतीय-पक्ष सतह तक पहुँचने से पहले मुक्त-रूप वाले स्ट्रिंग्स से क्रेडेंशियल-जैसी सामग्री को हटाएँ
phpboyscout Go toolkit का हिस्सा: go-tool-base से निकाले गए छोटे, फ्रेमवर्क-मुक्त Go मॉड्यूल। दस्तावेज़: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact विश्वसनीय और अविश्वसनीय ऑब्ज़र्वेबिलिटी सतहों के बीच की सीमा पर मुक्त-रूप वाले स्ट्रिंग्स से क्रेडेंशियल-जैसी सामग्री को हटाता है, जैसे टेलीमेट्री विक्रेता, लॉग एग्रीगेटर और मेट्रिक स्टोर। त्रुटि संदेश, कमांड आर्गुमेंट, और HTTP हेडर मान नियमित रूप से गलती से सीक्रेट्स ले जाते हैं (एम्बेडेड userinfo वाला URL, os.Args में --api-key=sk-… फ़्लैग, एक्सपोर्ट त्रुटि में उद्धृत Authorization हेडर)। इन्हें बाहर जाते समय redact.String से गुज़ारें और वे कभी भी प्रोसेस से स्पष्ट रूप में बाहर नहीं जाएँगे।
डिज़ाइन
- शून्य निर्भरताएँ। शुद्ध मानक लाइब्रेरी (
regexp,strings), इसलिए आपके ग्राफ़ में मॉड्यूल के अलावा कुछ नहीं आता। एकdepfootprint_test.goगार्ड इसे लागू करता है, और टेस्ट कोtestifyतथा एस्टेट केgo/errorsतक सीमित रखता है। - सीमा पर रिडैक्शन। डेटा जहाँ होस्ट छोड़ता है वहीं सैनिटाइज़ करें, हर जगह नहीं।
- डिफ़ॉल्ट रूप से रूढ़िवादी। अपारदर्शी-टोकन फ़ॉलबैक के लिए ≥41 अक्षर आवश्यक हैं ताकि यह UUID, MD5, या SHA-1 पर कभी गलत सकारात्मक न दे।
इंस्टॉल
go get gitlab.com/phpboyscout/go/redact
उपयोग
import "gitlab.com/phpboyscout/go/redact"
safe := redact.String("failed calling https://user:[email protected]?api_key=sk-abc123…")
// → credentials in the URL userinfo, the api_key query param, and the sk- token are masked
msg := redact.Error(err) // redact.String applied to err.Error() (nil-safe)
if redact.IsSensitiveHeaderKey("Authorization") { /* … redact this header's value … */ }
redact.String किसी भी स्कीम (https://, postgres://, redis://, …) के लिए URL userinfo, क्रेडेंशियल name=value असाइनमेंट, JSON क्रेडेंशियल फ़ील्ड जैसे "access_token" और "client_secret", Authorization-हेडर टोकन, JWT, प्रसिद्ध प्रोवाइडर प्रीफ़िक्स (sk-, ghp_, glpat-, AIza, AKIA, Slack), और लंबे अपारदर्शी टोकन को हटाता है। SensitiveHeaderKeys / IsSensitiveHeaderKey उन हेडर की पहचान करते हैं जिनके मान रिडैक्ट किए जाने चाहिए।
सीमाएँ
पैटर्न कैटलॉग कभी 100% रिकॉल तक नहीं पहुँचते, और यह जानबूझकर रूढ़िवादी है:
- कोई कॉन्फ़िगरेशन नहीं। आप कोई पैटर्न जोड़, अक्षम या पुनःक्रमित नहीं कर सकते। पैकेज चार सिंबल एक्सपोर्ट करता है और ट्यून करने के लिए कुछ नहीं। इसके बजाय इसके चारों ओर कंपोज़ करें।
Stringमनमाने हेडर मानों को मास्क नहीं करता। यहAuthorization:जानता है और कुछ नहीं;X-API-Key: …पास हो जाता है। हेडर सिंबल इसी के लिए हैं।- विशिष्ट और छोटे सीक्रेट्स निकल जाते हैं। कैच-ऑल फ़ॉलबैक को 41 अक्षर चाहिए, और प्रत्येक प्रोवाइडर प्रीफ़िक्स की एक कठोर न्यूनतम लंबाई है।
- पैटर्न केवल ASCII हैं, और रिडैक्शन एकतरफ़ा है: उलटने के लिए कुछ नहीं और क्या बदला गया इसका कोई रिकॉर्ड नहीं।
What redact does not do पूरी सीमा बताता है।
दस्तावेज़ीकरण
पूर्ण गाइड, संदर्भ और थ्रेट मॉडल: redact.go.phpboyscout.uk। जनरेट किए गए API दस्तावेज़ और चलाने योग्य उदाहरण: pkg.go.dev।
लाइसेंस
देखें LICENSE।