أفضل الممارسات
كيف تطبّق التشويش بفعالية: ما الذي ينبغي حمايته، وما الذي يُترك كما هو، وما الذي لا يستطيع التشويش فعله من أجلك.
التوصيات
شوِّش الكود الخاص بك فقط.
لا تطبّق تشويش VM على سكربتات الموردين أو المكتبات أو ملفات polyfill. فهي مصغّرة أصلًا، ولن يؤدي التشويش إلا إلى إبطائها.
استخدم وضع التعليقات لحماية دقيقة.
اضبط
vmTargetFunctionsModeعلى'comment'، ثم أشّر على الدوال الحساسة وحدها باستخدام/* javascript-obfuscator:vm */بدلًا من حماية كل شيء. انظر استهداف دوال بعينها.اختبر جيدًا بعد التشويش.
اختبر الكود المشوَّش دائمًا في بيئتك المستهدفة. فبعض الخيارات قد تكسر الكود بطرق خفية. كما أن دفاعات وقت التشغيل تتفاعل مع أدوات أتمتة الاختبار والمنقِّحات؛ انظر الاختبار وCI.
استثنِ المسارات المتكررة من تشويش VM.
استخدم
vmExcludeFunctionsلحلقات الرسوم المتحركة والعرض في الوقت الفعلي والكود الذي يُستدعى بكثرة. وهو لا يطابق إلا أسماء الدوال على مستوى الجذر (ومع Async Executor، دوالasyncالأبعد خارجًا)؛ ولإبقاء الكود المتكرر المتداخل خارج الآلة الافتراضية، استخدم وضع التعليقات وأشّر فقط على الدوال التي تحتاج إلى حماية.
تنبيه أمني بالغ الأهمية
لا تخزّن أبدًا مفاتيح API أو الأسرار أو بيانات الاعتماد في كود JavaScript للواجهة الأمامية، حتى مع التشويش.
يزيد التشويش الجهد اللازم لفهم الكود وتعديله، لكنه ليس تشفيرًا ولا يضمن استحالة الهندسة العكسية. فبيئة التشغيل تظل قابلة للمراقبة في بيئة يتحكم فيها المهاجم، لذا فبإمكان المهاجم المصمِّم أن يستخرج البيانات من الكود العامل على جهة العميل في كل الأحوال. أبقِ الأسرار وقرارات الأمان الحاسمة على الخادم.
عمليًا، ينبغي لك أن:
- تخزّن الأسرار على الخادم الخلفي
- تستخدم متغيرات البيئة على جهة الخادم
- تمرّر استدعاءات API عبر خادمك الخلفي كوكيل لإخفاء المفاتيح
- تستخدم رموزًا قصيرة العمر يصدرها خادمك
ما الذي ينبغي أن تحميه؟
تشويش VM مثالي لما يلي:
- الخوارزميات المملوكة ومنطق الأعمال
- كود التحقق من الترخيص (الفحوص على جهة العميل)
- فحوص مقاومة العبث والتحقق من السلامة
- منطق الألعاب وآليات مكافحة الغش
- تنفيذ الميزات المدفوعة
- منطق حساب الأسعار
البناء والإصدار
شوِّش الناتج المُجمَّع والمحزوم بوصفه آخر خطوة في البناء؛ راجع توافق بيئة التشغيل لمعرفة خط البناء. قِس كلفة الإعداد المسبق الذي تختاره على كودك، كما هو موضح في اختيار الإعدادات المسبقة. شغّل الاختبارات الوظيفية على بناء اختبار، ثم تحقّق من نسخة الإصدار المنفصلة التي تشحنها فعليًا، كما هو موضح في الاختبار وCI.
