Browser Environment

Pro
v7.9.0+

घोषित करें कि आपका प्रोडक्शन बिल्ड कैसे सर्व होता है, ताकि सुरक्षित कोड अपनी अखंडता उससे बाँध सके।

देखें

Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock

YouTube पर देखें

browserEnvironment विकल्प उस वातावरण के बारे में तथ्य घोषित करता है जिसमें आपका प्रोडक्शन बिल्ड सर्व होता है, ताकि सुरक्षित कोड स्वयं को उनसे बाँध सके या उन पर प्रतिक्रिया दे सके। यह एक छोटा ऑब्जेक्ट है, और इसका हर फ़ील्ड किसी एक निश्चित सुरक्षा के साथ ही प्रभावी होता है - अकेले यह विकल्प कुछ नहीं करता:

JavaScript

transport

वह स्कीम जिस पर आपकी प्रोडक्शन साइट बंडल सर्व करती है - 'http' या 'https'। vmSelfDefending के साथ प्रभावी होता है।

'https' के साथ, कोई रिवर्स इंजीनियर जिस प्रति को सादे HTTP पर सर्व करता है, वह सही ढंग से नहीं चलेगी। 'http' या फ़ील्ड न सेट करने पर ऐसी कोई सुरक्षा नहीं जुड़ती।

transport: 'https' घोषित किया गया बिल्ड केवल वहीं सही चलता है जहाँ वह वास्तव में https: पर सर्व होता है। हर दूसरी स्कीम उसे खराब कर देती है, इसलिए इसे तभी घोषित करें जब आपका प्रोडक्शन बिल्ड लोड करने वाला हर संदर्भ HTTPS हो। इसमें ये शामिल नहीं हैं:

  • सादा http://, डेवलपमेंट में http://localhost सहित;
  • file:// - Electron, Cordova और अन्य पैकेज्ड ऐप्स;
  • blob: और about: एम्बेडिंग - about:blank या srcdoc iframe के भीतर चलने वाला बंडल।

क्लाइंट-साइड HTTP→HTTPS रीडायरेक्ट भी पहले HTTP पेज ही रेंडर करता है, इसलिए रीडायरेक्ट पूरा होने से पहले बंडल नहीं चलना चाहिए।

hosting

आपका प्रोडक्शन बंडल कहाँ से सर्व होता है - 'remote' या 'local'। vmDebugProtection के साथ, और केवल browser तथा browser-no-eval टारगेट्स पर प्रभावी होता है। इसके लिए ऑब्फ़स्केटर संस्करण 7.14.1 या बाद का चाहिए।

'remote' के साथ, किसी स्थानीय डेवलपमेंट होस्ट से सर्व की गई प्रति को रनटाइम वातावरण का बेमेल माना जाता है और ऑटोमेशन रक्षा उपाय vmDefenseReaction में कॉन्फ़िगर किए अनुसार प्रतिक्रिया देते हैं (देखें VM रक्षा उपायों की टेलीमेट्री और प्रतिक्रियाएँ)। 'local' या फ़ील्ड न सेट करने पर ऐसी कोई सुरक्षा नहीं जुड़ती।

hosting: 'remote' घोषित किया गया बिल्ड केवल तभी सही चलता है जब उसे किसी रिमोट होस्ट से लोड किया जाए। किसी स्थानीय डेवलपमेंट सर्वर से खोला गया बंडल जानबूझकर बेमेल माना जाता है, इसलिए इसे तभी घोषित करें जब आपका प्रोडक्शन बिल्ड लोड करने वाला हर संदर्भ रिमोट रूप से सर्व होता हो, और इसे स्थानीय डेवलपमेंट, टेस्टिंग और CI वाले बिल्ड्स से दूर रखें।

hookedBuiltins

यह घोषित करने के लिए true सेट करें कि जिस रनटाइम में आपका प्रोडक्शन बिल्ड चलता है, वह वैध रूप से नेटिव बिल्ट-इन्स को JavaScript रैपर से बदलता है - ऐप का अपना एंटी-टैम्परिंग, होस्ट पेज, या उसी realm को साझा करने वाले अन्य ब्राउज़र एक्सटेंशन। vmSelfDefending के साथ प्रभावी होता है। ऑब्फ़स्केटर संस्करण 7.15.0 या बाद का आवश्यक है।

सामान्यतः Self Defending बदले गए नेटिव बिल्ट-इन को छेड़छाड़ मानता है और बिल्ड को चलने से रोक देता है। hookedBuiltins: true के साथ यह ऐसे वातावरण को सहन करता है और सुरक्षित कोड चलता रहता है। false या अनसेट फ़ील्ड सख़्त व्यवहार बनाए रखता है।

JavaScript

hookedBuiltins जानबूझकर बिल्ट-इन हुक डिटेक्शन को ढीला करता है: एक बार सेट होने पर, आपके कोड की जाँच के लिए उन्हीं बिल्ट-इन्स को रैप करने वाला विश्लेषक भी अब रोका नहीं जाता। VM वर्चुअलाइज़ेशन, एंटी-डिबगिंग और अखंडता सुरक्षा अप्रभावित रहती हैं। इसे केवल तभी सक्षम करें जब यह ज्ञात हो कि आपका प्रोडक्शन रनटाइम बिल्ट-इन्स को हुक करता है और वह कमज़ोर गारंटी स्वीकार्य हो।

समर्थित टारगेट

browserEnvironment केवल browser, browser-no-eval और service-worker टारगेट्स पर लागू होता है। node, userscript और bytenode के लिए इसका कोई प्रभाव नहीं होता। hosting और भी सीमित है: service worker पर इसे स्वीकार तो किया जाता है, पर वहाँ यह कुछ भी नहीं बाँधता।

डैशबोर्ड में Transport, Hosting और Hooked Builtins नियंत्रण उन्नत सुरक्षा सेक्शन में होते हैं। हर एक तभी संपादन योग्य बनता है जब उससे जुड़ी सुरक्षा चालू हो - Transport और Hooked Builtins के लिए VM Self Defending, Hosting के लिए VM Debug Protection - और टारगेट उसका समर्थन करता हो।

आवश्यकताएँ

  • transport और hookedBuiltins vmSelfDefending के साथ और hosting vmDebugProtection के साथ प्रभावी होते हैं; अन्यथा इनमें से किसी का कोई प्रभाव नहीं।
  • एक browser, browser-no-eval या service-worker टारगेट (hosting के लिए browser या browser-no-eval)।
  • transport के लिए ऑब्फ़स्केटर संस्करण 7.9.0 या बाद का, hosting के लिए 7.14.1 या बाद का, hookedBuiltins के लिए 7.15.0 या बाद का।

उदाहरण

JavaScript