एक विचार एक socket.listener
के माध्यम से ब्राउज़र को जावास्क्रिप्ट फ़ाइलों की सेवा और eval
साथ चलाने के लिए उपयोग WebSockets है। इस तरह, किसी को भी वास्तविक "स्रोत" देखने के लिए बहुत मुश्किल है, क्योंकि सॉकेट के कनेक्शन को पहले ही बंद कर दिया गया है।
http://samy.pl, के मुखपृष्ठ पर एक और अद्भुत रणनीति देखी जा सकती है जो जेएस कोड को छिपाने के लिए बाइट सिफर के रूप में रिक्त स्थान (\ u0020) और टैब (\ u0009) का उपयोग करता है!
आप स्रोत देखते हैं, तो आप केवल 1 लाइन वास्तविक जे एस कोड के देख सकते हैं: http://pastebin.com/e0pqJ8sB स्वयं देखें अगर आप पता लगा सकते हैं कि यह कैसे काम करता है (कोई विफल!)
जहाँ तक ऑबफस्केटर का सवाल है, http://utf-8.jp/public/jjencode.html (और/या एक और संस्करण)
यह नि: शुल्क अस्पष्टकर्ता रन क्लाइंट साइड, और निरर्थक शब्दों कि unminify.com
और jsbeautifier
भी डिकोड नहीं कर सकते हैं पैदा करता है देखें:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+")"+"\"")())();
मूल कोड: दोनों ख से
alert("Hello, JavaScript")
आउटपुट eautifier वेबसाइटें:
$ = ~[];
$ = {
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ({} + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ({} + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
};
$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$($.$$ + "\"" + $.$_$_ + (![] + "")[$._$_] + $.$$$_ + "\\" + $.__$ + $.$$_ + $._$_ + $.__ + "(\\\"\\" + $.__$ + $.__$ + $.___ + $.$$$_ + (![] + "")[$._$_] + (![] + "")[$._$_] + $._$ + ",\\" + $.$__ + $.___ + "\\" + $.__$ + $.__$ + $._$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $._$_ + $._$$ + $.$$__ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.__$ + $.$_$ + $.__$ + "\\" + $.__$ + $.$$_ + $.___ + $.__ + "\\\"\\" + $.$__ + $.___ + ")" + "\"")())();
आशा है कि यह ज़रूरत वाले लोगों को प्रबुद्ध करे!
मुझे नहीं पता कि obfuscated कोड आसानी से डिकोडेबल है, लेकिन Google जावास्क्रिप्ट को देखें, और इसे "चोरी" करने का प्रयास करें :) – Aif
जैसा कि आपने कहा था, कोई 100% सुरक्षा नहीं है। मैं किसी ऐसे व्यक्ति से कहूंगा जो "चोरी" जेएस कोड के साथ कुछ भी सार्थक करने के लिए परिष्कृत है, यह भी आपके स्क्रिप्ट को छिपाने के लिए नियोजित किसी भी हाथ से चलने के लिए पर्याप्त परिष्कृत है। यानी, यह एक सुंदर व्यर्थ उपक्रम IMHO है। – deceze
एक और समाधान, जो अत्यधिक समेकित है, अपने सर्वर साइड कोड के साथ अपने जावास्क्रिप्ट को कसकर जोड़ना है ताकि अगर कोई आपके जेएस चुरा लेता है तो भी यह उनके लिए इसका उपयोग करने के लिए बहुत अधिक काम करेगा। –