سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل هناك أي طريقة لإخفاء أو تشفير كود JavaScript لمنع الأشخاص من عرض و/أو نسخ و/أو تعديل البرامج الاحتكارية؟

هل كانت مفيدة؟

المحلول

يمكنك التعتيم عليه، لكن لا توجد طريقة لحمايته بشكل كامل.

مثال التعتيم:https://obfuscator.io http://www.javascriptobfuscator.com/Default.aspx

نصائح أخرى

لا هذا ليس مستحيل.إذا كان يعمل على متصفح العميل، فيجب تنزيله بواسطة متصفح العميل.من السهل جدًا استخدام Fiddler لفحص جلسة HTTP والحصول على أي ملفات js تم تنزيلها.

هناك حيل يمكنك استخدامها.أحد أكثر هذه الطرق وضوحًا هو استخدام أداة تشويش جافا سكريبت.

ثم مرة أخرى، يمنع التشويش التطفل العرضي فقط، ولا يمنع الأشخاص من رفع الكود الخاص بك واستخدامه.

يمكنك تجربة البرنامج النصي المترجم على شكل فيلم فلاش.

بينما يتفق الجميع بشكل عام على أن تشفير جافا سكريبت هو فكرة سيئة, ، هناك عدد قليل من حالات الاستخدام الصغيرة حيث يكون إبطاء الهجوم أفضل من لا شيء.يمكنك أن تبدأ مع ضاغط يوي (كما قالBen Alpert)، أو JSMin، أو Uglify، أو غيرها الكثير.

ومع ذلك، فإن الحالة الرئيسية التي أرغب فيها حقًا في "إخفاء الأشياء" هي عندما أقوم بنشر عنوان بريد إلكتروني.لاحظ أن هناك مشكلة في Chrome عند النقر فوق "فحص العنصر".وسوف تظهر التعليمات البرمجية الأصلية الخاصة بك:كل مرة.ولهذا السبب يُنظر إلى التشويش عمومًا على أنه طريقة أفضل للمضي قدمًا.

في هذا الصدد، أقوم بهجوم ذي شقين، فقط لإبطاء برامج البريد العشوائي.أقوم بتشويش/تصغير js ثم تشغيله مرة أخرى من خلال برنامج التشفير (مرة أخرى، هذه الخطوة الثانية لا معنى لها على الإطلاق في الكروم).

على الرغم من أنه ليس برنامج تشفير جافا سكريبت خالصًا، إلا أن أفضل برنامج تشفير html وجدته هو http://hivelogic.com/enkoder/.سوف يتحول هذا:

<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";  
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>

في هذا:

<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")"                                                                     ;
while(x=eval(x));
//-->
//]]>
</script>

ربما يكون ذلك كافيًا لإبطاء عدد قليل من برامج البريد العشوائي.لم أتلق أي بريد عشوائي عبر استخدام هذا (! حتى الآن).

أحد أفضل الضواغط (وليس على وجه التحديد جهاز التعتيم) هو ضاغط يوي.

JavaScript هي لغة برمجة نصية، وبالتالي تظل في شكل يمكن قراءته بواسطة الإنسان حتى يحين وقت تفسيرها وتنفيذها بواسطة وقت تشغيل JavaScript.

الطريقة الوحيدة لإخفائها جزئيًا، على الأقل عن العقول الأقل تقنية، هي التشويش.

إن التشويش يجعل من الصعب على البشر قراءته، ولكنه ليس مستحيلاً بالنسبة للخبراء التقنيين.

إذا كان لديك أي شيء محدد تريد إخفاءه (مثل خوارزمية خاصة)، فضعه على الخادم، أو ضعه في فيلم Flash واستدعه باستخدام JavaScript.كتابة ActionScript تشبه إلى حد كبير كتابة JavaScript، ويمكنك التواصل بين JavaScript وActionScript.يمكنك أن تفعل الشيء نفسه مع Silverlight، لكن Silverlight لا يتمتع بالاختراق الذي يتمتع به Flash.

ومع ذلك، تذكر أن أي هاتف محمول يمكنه تشغيل JavaScript، ولكن ليس Silverlight أو Flash، لذا فأنت تشل مستخدمي الهاتف المحمول إذا اخترت Flash أو Silverlight.

الطريقة الآمنة الوحيدة لحماية الكود الخاص بك هي عدم التخلي عنه.مع نشر العميل، لا يمكن تجنب وصول العميل إلى التعليمات البرمجية.

لذا فإن الإجابة المختصرة هي:لا يمكنك أن تفعل ذلك

الإجابة الأطول هي التفكير في الفلاش أو Silverlight.على الرغم من أنني أعتقد أن Silverlight سيكشف عن أسراره بكل سرور من خلال تشغيل العاكس على العميل.

لست متأكدًا من وجود شيء مماثل في منصة الفلاش.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top