अक्सर पूछे जाने वाले प्रश्न
सामान्य प्रश्न
JavaScript ऑब्फ़स्केशन और यह कैसे काम करता है, इस बारे में आम सवाल।
अपने कोड की सुरक्षा के कई कारण हैं: किसी को भी आपके काम को सीधे कॉपी करने से रोकना (HTML5 गेम्स जैसे क्लाइंट-साइड प्रोजेक्ट्स के लिए यह खास तौर पर महत्वपूर्ण है), कोड को समझना और बदलना कठिन बनाना, और ऐसे काम की सुरक्षा करना जिसका भुगतान अभी नहीं हुआ है, ताकि आप क्लाइंट को सोर्स कोड सौंपे बिना एक चलने वाला बिल्ड दिखा सकें।
स्टैंडर्ड ऑब्फ़स्केशन आपके JavaScript को पढ़ने में कठिन JavaScript में दोबारा लिखता है: नाम बदल दिए जाते हैं, स्ट्रिंग्स हटाकर एन्कोड की जाती हैं, कंट्रोल फ़्लो का ढाँचा बदला जाता है, लेकिन नतीजा फिर भी JavaScript ही होता है, जिसमें डिबगर से कदम-दर-कदम चला जा सकता है। VM (वर्चुअल मशीन) ऑब्फ़स्केशन आपके फ़ंक्शन्स की बॉडी को कस्टम बाइटकोड में कंपाइल करता है और उसे चलाने वाला एक एम्बेडेड इंटरप्रेटर साथ भेजता है, इसलिए सुरक्षित लॉजिक JavaScript के रूप में मौजूद ही नहीं रहता। कौन-से फ़ंक्शन कवर होते हैं और उन्हें कैसे चुनें, यह जानने के लिए VM ऑब्फ़स्केशन देखें।
हाँ। vmTargetFunctionsMode को comment पर सेट करें, फिर सुरक्षित किए जाने वाले हर फ़ंक्शन को /* javascript-obfuscator:vm */ से चिह्नित करें। ऑब्फ़स्केशन से पहले चलने वाले हर बिल्ड चरण में ये कमेंट्स बनाए रखें। देखें विशिष्ट फ़ंक्शन्स को लक्षित करना।
नहीं। API कुंजियाँ, सीक्रेट्स और क्रेडेंशियल्स कभी भी फ़्रंटएंड कोड में नहीं रखने चाहिए। ऑब्फ़स्केशन के सबसे ऊँचे स्तर के साथ भी, फ़्रंटएंड JavaScript में मौजूद कोई भी डेटा एक दृढ़ हमलावर द्वारा निकाला जा सकता है। ऑब्फ़स्केशन रिवर्स इंजीनियरिंग को कठिन बनाता है, पर यह एन्क्रिप्शन नहीं है और सीक्रेट्स की सुरक्षा के लिए इस पर भरोसा नहीं करना चाहिए। इसके बजाय सीक्रेट्स अपने बैकएंड सर्वर पर रखें, सर्वर साइड पर एनवायरनमेंट वेरिएबल्स का उपयोग करें, कुंजियाँ छिपाने के लिए API कॉल्स को अपने बैकएंड से प्रॉक्सी करें, या अपने सर्वर द्वारा जारी किए गए अल्पकालिक टोकन का उपयोग करें।
ऑब्फ़स्केशन कोड समझने और बदलने का प्रयास बढ़ाता है, चाहे विश्लेषण कोई व्यक्ति करे, कोई टूल या कोई AI सहायक; पर यह रिवर्स इंजीनियरिंग असंभव होने की गारंटी नहीं देता। हमलावर के नियंत्रण वाले वातावरण में रनटाइम देखा जा सकता है। गोपनीय जानकारी और अंतिम सुरक्षा निर्णय सर्वर पर रखें। VM कोड को कैसे बदलता है।
सबसे पहले रनटाइम रक्षा उपायों को कारण के रूप में खारिज करें। VM Self Defending और VM Debug Protection ऑटोमेशन टूल, headless ब्राउज़र और डिबगर के तहत, और जब target असली रनटाइम से मेल नहीं खाता, तब जानबूझकर निष्पादन तोड़ते हैं, इसलिए फ़ंक्शनल टेस्ट एक अलग टेस्टिंग बिल्ड पर चलाएँ जिसमें ये बंद हों। अगर वह बिल्ड भी टूटता है, तो vmTargetFunctionsMode: 'comment' से एक-एक फ़ंक्शन को वर्चुअलाइज़ करके समस्या को सीमित करें। समस्या निवारण गाइड हर चरण बताती है और यह भी कि बग रिपोर्ट में क्या शामिल करें।
ऑब्फ़स्केटर कोड जोड़ता है: आइडेंटिफ़ायर्स को जनरेट किए गए नाम मिलते हैं, स्ट्रिंग्स एक्सेसर फ़ंक्शन्स वाले String Array में चली जाती हैं (वैकल्पिक रूप से एन्कोडेड), और VM ऑब्फ़स्केशन के साथ आपके बाइटकोड के साथ एक पूरा वर्चुअल मशीन इंटरप्रेटर भी बंडल होता है। आकार की ज़्यादा चिंता न करें - ऑब्फ़स्केटेड कोड gzip या Brotli से अच्छी तरह कंप्रेस होता है, जिसे अधिकांश सर्वर डिफ़ॉल्ट रूप से चालू रखते हैं।
अधिक भारी प्रीसेट आउटपुट आकार और निष्पादन समय बढ़ा सकते हैं। निश्चित धीमेपन के गुणकों पर निर्भर रहने के बजाय अपने स्टार्टअप समय, बार-बार चलने वाले हिस्सों और संकुचित बंडल आकार को मापें। विकल्प संदर्भ · सर्वोत्तम प्रथाएँ
नहीं। आउटपुट को दोबारा लिखने से वह टूट सकता है, खास तौर पर Self Defending या VM Self Defending के साथ, जो कोड में बदलावों का पता लगाते हैं। आप ऑब्फ़स्केशन से पहले मिनिफ़ायर चला सकते हैं, बशर्ते वह /* javascript-obfuscator:vm */ जैसे javascript-obfuscator कमेंट्स बनाए रखे।
हम आपका सोर्स कोड नहीं रखते। JavaScript का बेसिक ऑब्फ़स्केशन आपके ब्राउज़र में चलता है। VM और HTML ऑब्फ़स्केशन सोर्स को हमारे सर्वर पर भेजते हैं, जो उसे प्रोसेस करके हटा देते हैं; जब कोई अनुरोध 4.4 MB से बड़ा हो, तो Team और Business प्लान उसे अस्थायी स्टोरेज में अपलोड करते हैं, जो प्रोसेसिंग के बाद हटा दिया जाता है। दुरुपयोग से निपटने और उपयोग के विश्लेषण के लिए हम तीन महीने तक हर ऑब्फ़स्केटेड आउटपुट का SHA-256 हैश और इस्तेमाल की गई कुछ सेटिंग्स (जैसे प्रीसेट, टारगेट और VM रक्षा उपाय) रखते हैं, कभी भी कोड या उसकी कोई सामग्री नहीं। डैशबोर्ड इतिहास केवल आपके ब्राउज़र में रखा जाता है; इसे इतिहास से प्रबंधित करें।
नहीं। ऑब्फ़स्केटर आपके मूल नाम, कमेंट्स या फ़ॉर्मैटिंग नहीं रखता, इसलिए आउटपुट को वापस आपके सोर्स में नहीं बदला जा सकता। यह कोई सुरक्षा गारंटी नहीं है (ऊपर डीऑब्फ़स्केशन वाला प्रश्न देखें), लेकिन इसका मतलब है कि आपको मूल कोड सुरक्षित रखना होगा।
हाँ। Node.js वातावरण के लिए आउटपुट ऑप्टिमाइज़ करने हेतु आप ऑब्फ़स्केशन विकल्पों में टारगेट के रूप में "Node" चुन सकते हैं।
ES2015+ सिंटैक्स, async/await, optional chaining और निजी क्लास फ़ील्ड समर्थित हैं; नया सिंटैक्स अपने चुने हुए ऑब्फ़स्केटर संस्करण पर जाँचें। ऑब्फ़स्केट करने से पहले TypeScript और JSX कंपाइल करें और अपना ऐप बंडल करें - देखें रनटाइम संगतता। HTML फ़ाइलें parseHtml के ज़रिए समर्थित हैं; देखें HTML ऑब्फ़स्केशन।
ऑब्फ़स्केटेड आउटपुट - VM इंटरप्रेटर और Self Defending लेयर सहित - एवरग्रीन डेस्कटॉप ब्राउज़र्स और iOS 16+ (लगभग पिछले 4 साल) पर सक्रिय रूप से समर्थित और परीक्षित है। पुराने ब्राउज़र्स ES2015 मॉड्यूल सपोर्ट की न्यूनतम सीमा तक बेस्ट-एफ़र्ट आधार पर काम करते हैं; उससे नीचे कुछ भी, जिसमें Internet Explorer भी शामिल है, दायरे से बाहर है।
VM सुरक्षा के लिए हमारे प्राइसिंग प्लान देखें, या स्टैंडर्ड ऑब्फ़स्केशन के लिए मुफ़्त ऑनलाइन प्लेग्राउंड आज़माएँ। पूरी जानकारी के लिए शुरुआत करने की गाइड पढ़ें।
प्राइसिंग और खाता
प्लान, बिलिंग और उपयोग सीमाओं से जुड़े सवाल।
उपयोग की गणना आपके इनपुट सोर्स कोड के आकार (बाइट्स में) से होती है। संसाधनों के उचित बँटवारे के लिए हर ऑब्फ़स्केशन जॉब पर न्यूनतम 0.1 MB (102,400 बाइट्स) गिना जाता है। उदाहरण के लिए, यदि आप 50 KB की फ़ाइल ऑब्फ़स्केट करते हैं, तो वह आपके कोटे में 0.1 MB के रूप में गिनी जाएगी। 0.1 MB से बड़ी फ़ाइलें उनके वास्तविक आकार के अनुसार गिनी जाती हैं।
VM ऑब्फ़स्केशन की सीमा पूरी हो जाने के बाद भी आप स्टैंडर्ड (ब्राउज़र-आधारित) ऑब्फ़स्केशन बिना किसी सीमा के मुफ़्त उपयोग करते रह सकते हैं। पेड प्लान्स में आपका VM कोटा हर महीने आपकी सदस्यता शुरू होने की मासिक वर्षगांठ पर रीसेट होता है, वार्षिक प्लान्स पर भी। Free प्लान की सीमा आजीवन होती है और रीसेट नहीं होती। जिन प्लान्स में दैनिक VM सीमा होती है, वे उस सीमा तक पहुँचने के बाद अगले दिन फिर से VM के साथ ऑब्फ़स्केट कर सकते हैं। अधिक VM ऑब्फ़स्केशन कोटा पाने के लिए आप कभी भी अपना प्लान अपग्रेड कर सकते हैं।
हाँ, आप किसी भी समय अपना प्लान अपग्रेड या डाउनग्रेड कर सकते हैं। अपग्रेड करने पर आपकी बिलिंग अवधि के बचे हुए हिस्से के लिए आनुपातिक राशि ली जाएगी। डाउनग्रेड करने पर नई कीमत आपके अगले बिलिंग साइकिल से लागू होगी।
आप किसी भी समय अपनी सदस्यता रद्द कर सकते हैं। आपकी वर्तमान बिलिंग अवधि के अंत तक आपके प्लान तक आपकी पहुँच बनी रहेगी। कृपया ध्यान दें कि आंशिक बिलिंग अवधि या अप्रयुक्त समय के लिए हम रिफ़ंड नहीं देते।
हम अपने सुरक्षित पेमेंट प्रोसेसर Stripe के ज़रिए सभी प्रमुख क्रेडिट कार्ड (Visa, Mastercard, American Express) और डेबिट कार्ड स्वीकार करते हैं। सभी लेन-देन एन्क्रिप्टेड और PCI-अनुरूप हैं।
