अपडेट पर वापस जाएँ
New releaseAug 25, 2026

redact v0.2.2

शून्य-निर्भरता वाली Go लाइब्रेरी जो लॉग/टेलीमेट्री तक पहुँचने से पहले क्रेडेंशियल-जैसे पैटर्न (API कुंजियाँ, JWT, Authorization हेडर, URL userinfo) को हटा देती है।

साझा करें

redact

लॉग, टेलीमेट्री या किसी भी तृतीय-पक्ष सतह तक पहुँचने से पहले फ्री-फॉर्म स्ट्रिंग्स से क्रेडेंशियल-जैसी सामग्री हटाएँ

Go Reference Pipeline Coverage phpboyscout Go toolkit

phpboyscout Go टूलकिट का हिस्सा — go-tool-base से निकाले गए छोटे, फ्रेमवर्क-मुक्त Go मॉड्यूल। दस्तावेज़: redact.go.phpboyscout.uk


gitlab.com/phpboyscout/go/redact विश्वसनीय (trusted) और अविश्वसनीय (untrusted) ऑब्ज़र्वेबिलिटी सतहों — टेलीमेट्री वेंडर, लॉग एग्रीगेटर, मेट्रिक स्टोर — के बीच की सीमा (boundary) पर फ्री-फॉर्म स्ट्रिंग्स से क्रेडेंशियल-जैसी सामग्री रिडैक्ट करता है। एरर संदेश, कमांड आर्गुमेंट और HTTP हेडर मान अक्सर गलती से रहस्य (secrets) ले जाते हैं (एम्बेडेड userinfo वाला URL, os.Args में --api-key=sk-… फ़्लैग, किसी एक्सपोर्ट एरर में उद्धृत Authorization हेडर)। बाहर जाते समय उन्हें redact.String से गुज़ारें और वे प्रोसेस से कभी भी सादे (clear) रूप में बाहर नहीं निकलेंगे।

डिज़ाइन

  • शून्य निर्भरताएँ। विशुद्ध मानक पुस्तकालय (regexp, strings) — आपके ग्राफ़ में मॉड्यूल के अलावा कुछ नहीं जाता। एक depfootprint_test.go गार्ड इसे लागू करता है।
  • सीमा-रेखा रिडक्शन। डेटा जहाँ होस्ट छोड़ता है वहीं सैनिटाइज़ करें, हर जगह नहीं।
  • डिफ़ॉल्ट रूप से रूढ़िवादी। अपारदर्शी-टोकन फ़ॉलबैक को ≥41 वर्णों की आवश्यकता होती है, इसलिए यह UUID, MD5 या SHA-1 पर कभी गलत-सकारात्मक (false-positive) नहीं होता।

इंस्टॉल

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 असाइनमेंट, "access_token" और "client_secret" जैसे JSON क्रेडेंशियल फ़ील्ड, Authorization-हेडर टोकन, JWT, जाने-माने प्रोवाइडर प्रीफ़िक्स (sk-, ghp_, glpat-, AIza, AKIA, Slack) और लंबे अपारदर्शी टोकन हटाता है। SensitiveHeaderKeys / IsSensitiveHeaderKey उन हेडरों की पहचान करते हैं जिनके मान रिडैक्ट किए जाने चाहिए।

सीमाएँ

पैटर्न कैटलॉग कभी भी 100% रिकॉल तक नहीं पहुँचते, और यह जानबूझकर रूढ़िवादी है:

  • कोई कॉन्फ़िगरेशन नहीं। आप कोई पैटर्न जोड़, अक्षम या पुनः क्रमित नहीं कर सकते — पैकेज केवल चार प्रतीक (symbols) निर्यात करता है और ट्यून करने के लिए कुछ नहीं। इसके बजाय इसके चारों ओर रचना (compose) करें।
  • String मनमाने हेडर मानों को मास्क नहीं करता। यह केवल Authorization: जानता है और कुछ नहीं; X-API-Key: … पास हो जाता है। हेडर प्रतीक इसी के लिए हैं।
  • विशिष्ट (bespoke) और छोटे रहस्य फिसल जाते हैं। कैच-ऑल फ़ॉलबैक को 41 वर्ण चाहिए, और प्रत्येक प्रोवाइडर प्रीफ़िक्स की एक कठोर न्यूनतम लंबाई होती है।
  • पैटर्न केवल ASCII हैं, और रिडक्शन एकतरफा है — उलटने के लिए कुछ नहीं और क्या बदला गया इसका कोई रिकॉर्ड नहीं।

redact क्या नहीं करता पूरी सीमा बताता है।

दस्तावेज़ीकरण

संपूर्ण गाइड, संदर्भ (reference) और खतरा मॉडल: redact.go.phpboyscout.uk। जनरेटेड API दस्तावेज़ और चलाने योग्य उदाहरण: pkg.go.dev

लाइसेंस

देखें LICENSE

श्रेणियाँ