रनटाइम संगतता
वास्तविक रनटाइम के हिसाब से target चुनें। ब्राउज़र और Node बिल्ड में अलग-अलग रक्षा उपाय हो सकते हैं; ब्राउज़र target, Node का विकल्प नहीं है।
target
browser: Chrome, Firefox, Safari, Edge।browser-no-eval:browserजैसा ही, लेकिन आउटपुटeval()का उपयोग नहीं करता। इसका उपयोग तब करें जब लक्षित पेज में ऐसी Content Security Policy हो जोeval/unsafe-evalको प्रतिबंधित करती है।node: Node.js वातावरण। ब्राउज़र-विशिष्ट विकल्प बंद रहते हैं (उन्हेंwindow/documentचाहिए, और Node में वे या तो कुछ नहीं करते या एरर फेंकते)।vmSelfDefendingके कुछ रक्षा उपाय जो केवल-ब्राउज़र API पर निर्भर हैं (हेडलेस-ब्राउज़र डिटेक्शन, iframe-आधारित क्लीन-realm रिकवरी, एंटी-इंस्पेक्टर/DOM जाँचें), इस target के लिए नहीं जोड़े जाते।service-worker: Service Worker संदर्भ। कोईwindowनहीं, कोईdocumentनहीं, और अलगselfग्लोबल।userscript: userscript मैनेजर का सैंडबॉक्स (जैसे Tampermonkey)।vmSelfDefendingके रक्षा उपाय उसी के अनुसार समायोजित किए जाते हैं। VM ऑब्फ़स्केशन (या Parse HTML) और ऑब्फ़स्केटर v6.9.0+ आवश्यक हैं।bytenode: ऐसे कोड के लिए जिसे bytenode से.jscमें कंपाइल किया जाएगा। VM ऑब्फ़स्केशन (या Parse HTML) और ऑब्फ़स्केटर v6.13.0+ आवश्यक हैं।
ब्राउज़र वातावरण और डोमेन
कोड कहाँ चलता है, इससे जुड़ी घोषणाएँ वास्तविक डिप्लॉयमेंट से मेल खानी चाहिए। browserEnvironment को सही-सही बताना चाहिए कि बिल्ड वास्तव में कैसे सर्व होता है (देखें Browser Environment), और VM Domain Lock में वे सभी डोमेन सूचीबद्ध होने चाहिए जो उसे सर्व करते हैं (देखें VM Domain Lock)। ऑटोमेशन और डिबगर उन्नत सुरक्षा को ट्रिगर कर सकते हैं; देखें टेस्टिंग और CI।
JavaScript
ऑब्फ़स्केशन से फ़ंक्शन नाम और फ़ंक्शन का सोर्स टेक्स्ट बदल सकते हैं। .name या .toString() को स्थिर एप्लिकेशन डेटा के रूप में इस्तेमाल न करें; इसके बजाय स्पष्ट आइडेंटिफ़ायर का उपयोग करें। आपकी सेटिंग्स के अनुसार ज़रूरी होने पर सार्वजनिक ग्लोबल्स दिखाई दे सकते हैं।
strictMode
strictMode: null और strictMode: false भी स्पष्ट डायरेक्टिव, ES मॉड्यूल और क्लास मेथड्स को strict के रूप में पहचानते हैं। strictMode: true पूरे इनपुट को strict मानता है। अंतिम रनटाइम संदर्भ से मेल खाएँ; ऑब्फ़स्केशन के बाद strict mode जोड़ने वाला बंडलर व्यवहार बदल सकता है।
बिल्ड पाइपलाइन
अंतिम ऑब्फ़स्केशन चरण से पहले TypeScript या JSX को कंपाइल करें और अपने एप्लिकेशन को बंडल करें। उस बिल्ड के दौरान /* javascript-obfuscator:vm */ कमेंट्स बनाए रखें, ताकि comment मोड उन्हें ढूँढ सके। उसके बाद Self Defending या VM Self Defending आउटपुट को मिनिफ़ाई, फ़ॉर्मैट या किसी और तरह से दोबारा न लिखें। VM और HTML ऑब्फ़स्केशन के लिए सोर्स मैप उपलब्ध नहीं हैं।
