
redact v0.2.2
قم بتجريد المحتوى الشبيه بالبيانات الاعتمادية من السلاسل النصية الحرة قبل وصولها إلى السجلات أو بيانات القياس عن بُعد. جزء من مجموعة أدوات phpboyscout Go. · https://redact.go.phpboyscout.uk
redact
إزالة المحتوى الشبيه ببيانات الاعتماد من النصوص الحرة قبل وصولها إلى السجلات أو القياسات عن بُعد أو أي واجهة خارجية
جزء من phpboyscout Go toolkit: وحدات Go صغيرة بلا إطار عمل، مستخرجة من go-tool-base. التوثيق: redact.go.phpboyscout.uk
يقوم gitlab.com/phpboyscout/go/redact بإزالة المحتوى الشبيه ببيانات الاعتماد من النصوص
الحرة عند الحدود بين أسطح المراقبة الموثوقة وغير الموثوقة، مثل
موردي القياسات عن بُعد، ومجمّعات السجلات، ومخازن المقاييس. فغالبًا ما تحمل رسائل
الأخطاء، ومعطيات الأوامر، وقيم ترويسات HTTP أسرارًا عن غير قصد (رابط يحتوي على
معلومات مستخدم مضمّنة، أو علامة --api-key=sk-… في os.Args، أو ترويسة
Authorization مقتبسة في خطأ تصدير). مرّر هذه عبر redact.String عند
الخروج ولن تغادر العملية أبدًا بصورة مكشوفة.
التصميم
- بلا اعتماديات. مكتبة قياسية خالصة (
regexp،strings)، فلا يدخل شيء سوى الوحدة نفسها إلى مخططك. ويفرض ذلك حارسdepfootprint_test.go، ويُبقي الاختبارات علىtestifyوgo/errorsالخاصة بالمشروع. - إزالة عند الحدود. نظّف حيث تغادر البيانات المضيف، لا في كل مكان.
- متحفّظ افتراضيًا. يتطلب البديل الاحتياطي للرموز المعتمة ≥41 حرفًا حتى لا يُنتج إيجابيات كاذبة على UUIDs أو 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://، …)، وإسنادات بيانات الاعتماد بصيغة name=value، وحقول بيانات الاعتماد في JSON
مثل "access_token" و"client_secret"، ورموز ترويسة Authorization، وJWTs،
وبادئات المزوّدين المعروفة (sk-، ghp_، glpat-، AIza، AKIA، Slack)،
والرموز المعتمة الطويلة. ويحدّد SensitiveHeaderKeys / IsSensitiveHeaderKey
الترويسات التي ينبغي إزالة قيمها.
القيود
لا تبلغ فهارس الأنماط استرجاعًا بنسبة 100% أبدًا، وهذا الفهرس متحفّظ عن قصد:
- بلا إعداد. لا يمكنك إضافة نمط أو تعطيله أو إعادة ترتيبه. تُصدّر الحزمة أربعة رموز ولا شيء قابلًا للضبط. ركّب حولها بدلًا من ذلك.
- لا يُخفي
Stringقيم الترويسات العشوائية. فهو يعرفAuthorization:ولا شيء غيرها؛ أماX-API-Key: …فيمرّ دون تغيير. وهذا هو الغرض من رموز الترويسات. - تتسرّب الأسرار المخصّصة والقصيرة. يحتاج البديل الشامل إلى 41 حرفًا، ولكل بادئة مزوّد حد أدنى صارم للطول.
- الأنماط بترميز ASCII فقط، والإزالة أحادية الاتجاه: لا شيء قابل للعكس ولا سجل لما استُبدل.
توضّح ما لا يفعله redact الحدود الكاملة.
التوثيق
أدلة كاملة ومرجع ونموذج تهديد: redact.go.phpboyscout.uk. توثيق API المُولّد وأمثلة قابلة للتشغيل: pkg.go.dev.
الترخيص
انظر LICENSE.