Browser Environment
أعلِن عن كيفية تقديم نسخة الإنتاج حتى يتمكن الكود المحمي من ربط سلامته بها.
يعلن خيار browserEnvironment حقائق عن البيئة التي تُقدَّم فيها نسخة الإنتاج، بحيث يمكن للكود المحمي أن يربط نفسه بها أو يتفاعل معها. إنه كائن صغير، ويسري مفعول كل حقل منه مع حماية محددة واحدة - أما بمفرده فلا يفعل الخيار شيئًا:
transport
المخطط الذي تُقدَّم عبره الحزمة في الإنتاج - 'http' أو 'https'. يسري مفعوله مع vmSelfDefending.
مع 'https'، فإن نسخة يقدّمها من يقوم بالهندسة العكسية عبر HTTP عادي لن تعمل بشكل صحيح. أما 'http' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.
النسخة المُعلَن فيها transport: 'https' تعمل بشكل صحيح فقط حيث تُقدَّم فعليًا عبر https:. وأي مخطط آخر يفسدها، لذا لا تُعلِن ذلك إلا عندما يكون كل سياق يُحمِّل نسخة الإنتاج لديك عبر HTTPS. ويُستثنى من ذلك:
http://العادي، بما في ذلكhttp://localhostأثناء التطوير؛file://- Electron وCordova وغيرها من التطبيقات المحزومة؛- عمليات التضمين
blob:وabout:- حزمة تعمل داخل إطارabout:blankأوsrcdoc.
إعادة التوجيه من HTTP إلى HTTPS من جهة العميل تعرض صفحة HTTP أولًا، لذا يجب ألا تعمل الحزمة قبل اكتمال إعادة التوجيه.
hosting
المكان الذي تُقدَّم منه حزمة الإنتاج - 'remote' أو 'local'. يسري مفعوله مع vmDebugProtection، وعلى الهدفين browser وbrowser-no-eval فقط. يتطلب إصدار أداة التشويش 7.14.0 أو أحدث.
مع 'remote'، تُعامَل النسخة التي يأخذها من يقوم بالهندسة العكسية ويشغّلها في بيئته المحلية على أنها عدم تطابق في بيئة التشغيل، وتتفاعل دفاعات الأتمتة وفق ما هو مضبوط في vmDefenseReaction. أما 'local' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.
النسخة المُعلَن فيها hosting: 'remote' تعمل بشكل صحيح فقط عند تحميلها من مضيف بعيد. الحزمة المفتوحة من بيئة محلية - localhost أو خادم تطوير أو file:// - تُعامَل على أنها عدم تطابق عن قصد، لذا لا تُعلِن ذلك إلا عندما يكون كل سياق يُحمِّل نسخة الإنتاج لديك مُقدَّمًا عن بُعد، وأبقِه بعيدًا عن النسخ التي تستخدمها للتطوير المحلي والاختبار وCI.
hookedBuiltins
اضبطه على true لتعلن أن بيئة التشغيل التي يعمل فيها بناء الإنتاج لديك تستبدل دوال المتصفح الأصلية المدمجة بأغلفة JavaScript بشكل مشروع - آلية مكافحة العبث الخاصة بالتطبيق نفسه، أو الصفحة المضيفة، أو إضافات المتصفح الأخرى التي تشارك نفس الـ realm. يسري مع vmSelfDefending. يتطلب إصدار أداة التشويش 7.15.0 أو أحدث.
عادةً يعامل Self Defending أي دالة أصلية مدمجة مُستبدَلة على أنها عبث ويمنع البناء من العمل. مع hookedBuiltins: true يتسامح مع مثل هذه البيئة ويستمر الكود المحمي في العمل. أما false أو الحقل غير المضبوط فيحافظ على السلوك الصارم.
يخفف hookedBuiltins عمدًا من اكتشاف العبث: بمجرد ضبطه، لن يُوقَف أيضًا المحلِّل الذي يغلّف الدوال المدمجة نفسها لفحص الكود الخاص بك. ولا تتأثر افتراضية الآلة الافتراضية ولا الحماية من التصحيح ولا حماية السلامة. فعّله فقط عندما يكون معروفًا أن بيئة التشغيل في الإنتاج لديك تعترض الدوال المدمجة (hook) وأن هذا الضمان الأضعف مقبول.
الأهداف المدعومة
ينطبق browserEnvironment فقط على الأهداف browser وbrowser-no-eval وservice-worker. أما node وuserscript وbytenode فيُرفَض الخيار لها - إذ تفشل عملية التشويش بخطأ تحقّق بدلًا من تجاهل الإعداد بصمت. وhosting أضيق نطاقًا: يُقبل مع service worker لكنه لا يربط شيئًا هناك.
في لوحة التحكم، توجد عناصر التحكم Transport وHosting وHooked Builtins ضمن قسم Advanced Protection. ولا يصبح أي منها قابلًا للتحرير إلا بعد تفعيل الحماية المقترنة به - VM Self Defending لـ Transport وHooked Builtins، وVM Debug Protection لـ Hosting - ودعم الهدف له.
المتطلبات
- يسري
transportوhookedBuiltinsمعvmSelfDefending، وhostingمعvmDebugProtection؛ ولا تأثير لأيٍّ منها بخلاف ذلك. - هدف
browserأوbrowser-no-evalأوservice-worker(browserأوbrowser-no-evalلـhosting). - إصدار أداة التشويش 7.9.0 أو أحدث لـ
transport، و7.14.0 أو أحدث لـhosting، و7.15.0 أو أحدث لـhookedBuiltins.
