Browser Environment
घोषित करें कि आपका प्रोडक्शन बिल्ड कैसे सर्व होता है, ताकि सुरक्षित कोड अपनी अखंडता उससे बाँध सके।
browserEnvironment विकल्प उस परिवेश के बारे में तथ्य घोषित करता है जिसमें आपका प्रोडक्शन बिल्ड सर्व होता है, ताकि सुरक्षित कोड स्वयं को उनसे बाँध सके या उन पर प्रतिक्रिया दे सके। यह एक छोटा ऑब्जेक्ट है, और इसका हर फ़ील्ड किसी एक निश्चित सुरक्षा के साथ ही प्रभावी होता है — अकेले यह विकल्प कुछ नहीं करता:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
वह स्कीम जिससे आपका प्रोडक्शन बंडल सर्व करता है — 'http' या 'https'। vmSelfDefending के साथ प्रभावी होता है।
'https' के साथ, कोई रिवर्स इंजीनियर जिस प्रति को सादे HTTP पर सर्व करता है, वह सही ढंग से नहीं चलेगी। 'http' या फ़ील्ड न सेट करने पर ऐसी कोई सुरक्षा नहीं जुड़ती।
hosting
आपका प्रोडक्शन बंडल कहाँ से सर्व होता है — 'remote' या 'local'। vmDebugProtection के साथ, और केवल browser तथा browser-no-eval टारगेट्स पर प्रभावी होता है। इसके लिए ऑब्फ़स्केटर संस्करण 7.14.0 या बाद का चाहिए।
'remote' के साथ, कोई रिवर्स इंजीनियर जिस प्रति को उठाकर अपने स्थानीय सेटअप में चलाता है, उसे रनटाइम परिवेश की असंगति माना जाता है और ऑटोमेशन सुरक्षाएँ vmDefenseReaction में कॉन्फ़िगर किए अनुसार प्रतिक्रिया देती हैं। 'local' या फ़ील्ड न सेट करने पर ऐसी कोई सुरक्षा नहीं जुड़ती।
समर्थित टारगेट
browserEnvironment केवल browser, browser-no-eval और service-worker टारगेट्स पर लागू होता है। node, userscript और bytenode के लिए इस विकल्प को अस्वीकार कर दिया जाता है — ऑब्फ़स्केशन सेटिंग को चुपचाप छोड़ने के बजाय एक वैलिडेशन एरर के साथ विफल हो जाता है। hosting और भी सीमित है: service worker पर इसे स्वीकार तो किया जाता है, पर वहाँ यह कुछ भी नहीं बाँधता।
आवश्यकताएँ
transportvmSelfDefendingके साथ औरhostingvmDebugProtectionके साथ प्रभावी होता है; अन्यथा दोनों में से किसी का कोई प्रभाव नहीं।- एक
browser,browser-no-evalयाservice-workerटारगेट (hostingके लिएbrowserयाbrowser-no-eval)। transportके लिए ऑब्फ़स्केटर संस्करण 7.9.0 या बाद का,hostingके लिए 7.14.0 या बाद का।
उदाहरण
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});