ميزة تسليط الضوء: بدائل القواعد القائمة على الملفات¶
يصف هذا المستند كيفية الاحتفاظ بالقيم الحساسة (كلمات المرور ومفاتيح واجهة برمجة التطبيقات والرموز المميزة)
خارج FUZZY_MAP_pre / FUZZY_MAP كود المصدر وسجل Git عن طريق تحميل
نص “استبدال” من ملف منفصل في وقت التشغيل بدلاً من ترميزه.
وهذا مفيد بشكل خاص أثناء البث المباشر أو مشاركات الشاشة، حيث تكون الخريطة قد يكون كود المصدر نفسه مرئيًا، لكن الملف المشار إليه ليس كذلك.
---
## 1. المفهوم
عادةً ما يكون حقل “الاستبدال” للقاعدة هو النص الناتج الحرفي:
('my-secret-value', r'^(trigger)$', 85, {'command_flags': re.IGNORECASE})
مع تمكين الاستبدال المستند إلى الملف، تظهر قيمة “استبدال” تبدأ بـ
يتم التعامل مع البادئة التي تم تكوينها (افتراضيًا - أو .) على أنها اسم ملف.
تقوم Aura بتحليل اسم الملف هذا بالنسبة إلى الدليل الخاص بالمكون الإضافي، وتقرأ ملفاته
المحتوى، ويستخدم هذا المحتوى كنص بديل.
('-api_key.txt', r'^(show api key)$', 85, {'command_flags': re.IGNORECASE})
إذا كان api_key.txt موجودًا بجوار FUZZY_MAP_pre.py للمكون الإضافي، فسيتم (تجريده)
يتم استخدام المحتوى كبديل. إذا كان الملف غير موجود، الحرفي
يتم إرجاع السلسلة -api_key.txt بدلاً من ذلك (آمنة من الفشل: لا يوجد تسرب غير مقصود لـ
“لم يتم العثور على الملف” كنص قابل للاستخدام، ولا يوجد أي عطل).
---
## 2. الإعدادات
تم تكوينه في config/settings.py (أو config/settings_local.py للإعدادات المحلية
تجاوزات):
| الإعداد | اكتب | الافتراضي | الوصف |
|---|---|---|---|
| FILE4REPLACEMENT_USE | بول | صحيح | التبديل الرئيسي للميزة بأكملها. إذا كانت الكلمة “خطأ”، فسيتم دائمًا استخدام كلمة “استبدال” حرفيًا. |
| FILE4REPLACEMENT_ALLOWED_PREFIXES | tuple[str] | (\'-'، '.') | يجب أن تبدأ قيم “الاستبدال” بإحدى هذه البادئات لبدء عملية البحث عن الملف. فارغ/لا شيء = يتم التعامل مع أي قيمة لا تبدأ بحرف كاسم ملف محتمل. |
| FILE4REPLACEMENT_ALLOW_PATH_TRAVERSAL | بول | خطأ | إذا كانت صحيح، فإنها تسمح بحل الملفات خارج الدليل الخاص بالمكون الإضافي (على سبيل المثال، المسارات المطلقة، أو تسلسلات ../). انظر قسم الأمان أدناه. |
| FILE4REPLACEMENT_DENY_PREFIXES | tuple[str] | على سبيل المثال (\'/etc', '/proc', '/dev', '/var/lib', '/root', 'C:\\Windows', 'C:\\ملفات البرنامج') | يتم رفض المسارات المطلقة التي تم حلها والتي تبدأ بأي من هذه المسارات دائمًا، بغض النظر عن FILE4REPLACEMENT_ALLOW_PATH_TRAVERSAL. حدود أمنية صارمة ضد أدلة النظام. |
---
## 3. دقة المسار
يتم حل الملف على النحو التالي:
“مسار_مصدر” المكون الإضافي (الذي يتم تسجيله تلقائيًا بواسطة أداة تحميل الخرائط) هو انضم إلى
SL5NET_AURA_PROJECT_ROOT(اقرأ منSL5NET_AURA_PROJECT_ROOTمتغير البيئة) للحصول على دليل البرنامج المساعد. 2. تم ضم قيمة “الاستبدال” إلى هذا الدليل.ما لم تكن قيمة
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALصحيح، فإن المسار الذي تم حله يجب أن يبقى داخل دليل البرنامج المساعد، وإلا سيتم رفض البحث.بغض النظر عما سبق، فإن أي مسار يتم حله يبدأ بإدخال في يتم رفض
FILE4REPLACEMENT_DENY_PREFIXESدائمًا.في حالة وجود الملف، يتم إرجاع محتواه المجرد. وإلا فإن يتم إرجاع سلسلة “الاستبدال” الأصلية دون تغيير.
--- ## 4. ملاحظات أمنية
قم بتمكين
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALفقط إذا فهمت الآثار المترتبة: يسمح لأي مستخدم بتحرير ملفFUZZY_MAP_pre(على سبيل المثال. عبر محرر خرائط عبر الإنترنت) لقراءة الملفات العشوائية التي يمكن لعملية Aura القيام بها الوصول إليها وإظهار محتواها كنص إخراج مباشر.يوفر
FILE4REPLACEMENT_DENY_PREFIXESحماية أساسية ضد دلائل النظام المشترك حتى عندما يكون اجتياز المسار مسموحًا به، ولكنه كذلك ليس بديلاً عن تقييد من يمكنه تحرير ملفات الخرائط في المقام الأول.
الملفات المشار إليها هي نص عادي على القرص. ادمجها مع ملف نظام التشغيل الخاص بك الأذونات إذا كان المحتوى حساسًا.
--- ## 5. مثال
راجع config/maps/plugins/TEST_FILE4REPLACEMENT/ للحصول على مثال عملي للمكون الإضافي،
وtools/tests/TEST_FILE4REPLACEMENT.sh لبرنامج نصي اختباري يمارس
كل من البحث داخل الدليل والبحث خارج دليل البرنامج المساعد.
# config/maps/plugins/TEST_FILE4REPLACEMENT/de-DE/FUZZY_MAP_pre.py
FUZZY_MAP_pre = [
('.Zebra.txt', r'^(Zebra)$', 85, {'command_flags': re.IGNORECASE}),
]
أنشئ “.Zebra.txt” بجوار هذا الملف بالنص البديل المطلوب، ثم
قل (أو اكتب عبر وحدة التحكم) s Zebra لتشغيله.