2013-03-02 6 views
17

वास्तव में मैं इसे अपलोड करने और इसेडेकनियन पर बेचने के लिए क्रोम एक्सटेंशन और एक jQuery प्लगइन विकसित कर रहा हूं। जब मैं पृष्ठ का "स्रोत का निरीक्षण करता हूं" और मैं "संसाधन" टैब पर क्लिक करता हूं, तो जावास्क्रिप्ट फ़ाइल खाली दिखती है। कोडेकियन ऐसा कैसे करता है? मैं अपनी वेबसाइट में भी चोरी की रोकथाम करना चाहता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है। मुझे php और जावास्क्रिप्ट पता है और ऐसा करने के लिए कोई तरीका नहीं है, क्योंकि ब्राउज़र इसे निष्पादित करने के लिए फ़ाइल डाउनलोड करता है।मैं जावास्क्रिप्ट कोड चोरी को कैसे रोक सकता हूं?

आप उदाहरण here देख सकते हैं।

+7

फ़ाइल खाली है क्योंकि वास्तविक उलटी गिनती जेएस कोड 'jquery.js' में है। जब तक यह ग्राहक पक्ष नहीं है तब तक आप इसे छुपा नहीं सकते हैं। – Arthur

+2

http://en.wikipedia.org/wiki/Obfuscation_(software) - http://www.dmoz.org/Computers/Programming/Languages/JavaScript/Tools/Obfuscators/ – mplungjan

उत्तर

10

आप इसे कम पढ़ने योग्य (मिनीफियाक्शन और ओबफ्यूसेशन के माध्यम से) बनाने की कोशिश कर सकते हैं, लेकिन कोड अभी भी ट्रांफर किया गया है और इसे रिवर्स इंजीनियर किया जा सकता है।

आपके उदाहरण में वास्तविक कोड jquery.js फ़ाइल के साथ डाउनलोड किया गया है।

14

यदि आप इसे खाली देखते हैं, तो इसका मतलब है कि यह खाली है। किसी क्लाइंट से अपना जावास्क्रिप्ट कोड छिपाने का कोई तरीका नहीं है जिसे कोड निष्पादित करना होगा।

36

आप इसे छुपा नहीं सकते हैं क्योंकि आपके ब्राउज़र को इसे करने की आवश्यकता है। इतना ही आसान।

आपको यह समझने की आवश्यकता है कि यह क्लाइंट पक्ष पर निष्पादित एक स्क्रिप्ट है। यह संकलित नहीं है (जिसका अर्थ है कि यह एक बाइनरी नहीं है (0 और 1 मशीन भाषा))। तो यह स्वतंत्र रूप से पठनीय है।

फिर भी आप इसे पसंद YUI compressor

उपकरण का उपयोग कर सकते हैं अंधेरा करना मूल रूप से उपकरण के इस प्रकार (विधि की तरह "एक" "MyShinyMethodWhoMakesNiceStuff" के लिए खड़े) और चर अतिरिक्त रिक्ति, टैब लाइन रिटर्न हटाने और नाम बदलने के तरीके। इससे कोड को पढ़ने और समझना बहुत मुश्किल हो जाता है। रिवर्स इंजीनियरिंग इस प्रकार हासिल करना कठिन है।

कुछ बेस 64 या अन्य एन्कोड जैसे कुछ चाल का उपयोग करते हैं और फ़ंक्शन के साथ कोड का हिस्सा डीकोड करते हैं लेकिन यह केवल चाल है और तेज आंख को मूर्ख नहीं बनायेगा।

obfuscation द्वारा, आप लोगों को अपने कोड का विश्लेषण करने में अधिक समय व्यतीत करते हैं और चोरी करना अधिक जटिल होता है, और समय लगता है। आइए मान लें कि आपने एक अच्छी जावास्क्रिप्ट प्लगइन बनाई है जो बैंगनी में हर सफेद पृष्ठभूमि बनाता है (ठीक है, इतना अच्छा उदाहरण नहीं है, लेकिन इसे सिर्फ इमेज किए गए उदाहरण के लिए इस्तेमाल किया जाता है)। कोई इसे चोरी करना चाहता है और बैंगनी के बजाय इसे नीला बना देता है। यदि कोड खराब हो गया है, तो वह सोच सकता है कि आपके विचार को प्रतिलिपि बनाना और अपने कोड और नीली पृष्ठभूमि के साथ इसे अपने आप लिखना आसान है, इससे उसे रिवर्स इंजीनियरों की तुलना में कम समय लगेगा और समय में भी बनाए रखने में आसान कुएं समझेंगे। अंत में वह आपके विचार को "केवल" चुराएगा लेकिन आपका कोड नहीं।

मुझे लगता है कि अंत में, यह सिर्फ समय की बात है।

+1

लेकिन इन उपकरणों में से प्रत्येक के साथ, कोड को उलट किया जा सकता है (भले ही यह शायद ही पठनीय हो)। – Arthur

+0

@ आर्थर: ज़ाहिर है। एकमात्र तरीका यह है कि लोगों को इसे अनजान करने की कोशिश करने से हतोत्साहित करना। मैं इसे अपने पद में सटीक कर दूंगा। – moxy

+0

यह अच्छा होगा अगर उनके पास थास अनुप्रयोगों में से एक था जो RANDOMLY नाम/चर उत्पन्न करेगा। –

2

जावास्क्रिप्ट "संरक्षण" पर - मूल रूप से क्या हर किसी ने कहा।

की व्याख्या example you provided:

दरअसल, http://demos.pixelworkshop.fr/circular_countdown_cc/js/countdown.min.js खाली दिखाई देता है, हालांकि वास्तविक प्लगइन कोड jQuery के साथ जोड़ दिया गया है।js फ़ाइल, लाइन 58 पर शुरू:

http://demos.pixelworkshop.fr/circular_countdown_cc/js/jquery.js

-7

Liblock अपने आप द्वारा बनाया गया एक छोटा सा उपकरण है। यह आपके जेएस-स्रोतों को एन्क्रिप्ट करता है - यह obfuscation द्वारा कोई आसान अस्पष्टता नहीं है, लेकिन एन्क्रिप्शन द्वारा अच्छी सुरक्षा है।

जब आप अपने क्लाइंट में डीओएम का निरीक्षण करते हैं, तो आप देखेंगे कि प्रत्येक स्क्रिप्ट के लिए nplreq (url) जिसे आप HTML हेड में बांधते हैं।

देखें कि यह कैसे काम करता है liblock-demo - यह केवल "nopro_lib" और "xscroll.js" में स्क्रिप्ट को छिपाने के लिए एक डेमो है।

एन्क्रिप्शन और डिक्रिप्शन ब्राउज़र के लिए पूरी तरह से पारदर्शी हैं। इसका परीक्षण फ़ायरफ़ॉक्स, क्रोम, ओपेरा, कॉन्करर, आईई 8-10 पीसी पर और एंड्रॉइड टैबलेट पर डॉल्फिन और सफारी के साथ किया जाता है।

स्रोत सुरक्षित रूप से छिपे हुए हैं, और केवल वास्तव में महान प्रयासों के साथ उन्हें फिर से खोल दिया जा सकता है। एक-शॉट-चाबियों का उपयोग करके एईएस (रिजेंडेल 256) के साथ एन्क्रिप्शन किया जाता है जिसे क्लाइंट और (लिबॉक-) सर्वर के बीच डिफी-हेलमैन का उपयोग करके बातचीत की जाती है।

+8

"एन्क्रिप्शन द्वारा अच्छी सुरक्षा" - वह बीएस है। यदि ब्राउजर इसे डिक्रिप्ट कर सकता है तो हर कोई ऐसा भी कर सकता है। तो यह वास्तव में obfuscation की तुलना में * बदतर * है। – ThiefMaster

+2

@TiefMaster यह कंसोल में '$ (' script ') टाइप करने जैसा लगता है, यहां सुरक्षा को तोड़ने के लिए पर्याप्त है। –

संबंधित मुद्दे