هل استخدام أداة التعتيم كافية لتأمين كود JavaScript الخاص بي؟

StackOverflow https://stackoverflow.com/questions/29399

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أعمل على بناء أداة تطوير مكتوبة بلغة JavaScript.

لن يكون هذا مشروعًا مفتوح المصدر وسيتم بيعه (نأمل) كمنتج تجاري.

أبحث عن أفضل طريقة لحماية استثماراتي.هل استخدام أداة التعتيم (code mangler) كافية لتأمين الكود بشكل معقول؟

هل هناك بدائل أخرى لا أعرفها؟

(لست متأكدًا مما إذا كانت كلمة obfuscator هي الكلمة الصحيحة، فهو أحد التطبيقات التي تأخذ الكود الخاص بك وتجعله غير قابل للقراءة على الإطلاق.)

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

المحلول

سأقول لك سرا.بمجرد أن تفهم ذلك، ستشعر بتحسن كبير بشأن حقيقة أن تشويش جافا سكريبت مفيد حقًا فقط في توفير النطاق الترددي عند إرسال البرامج النصية عبر السلك.

كود المصدر الخاص بك لا يستحق السرقة.

أعلم أن هذا يمثل صدمة للأنا، لكن يمكنني أن أقول هذا بثقة دون أن أرى سطرًا من التعليمات البرمجية التي كتبتها لأنه خارج مجالات التطوير القليلة جدًا حيث يحدث السحر الخطير، فإن هذا ينطبق على جميع أكواد المصدر.

لنفترض أنه في الغد، قام شخص ما بإلقاء كومة من أقراص الفيديو الرقمية (DVD) على عتبة بابك تحتوي على الكود المصدري لنظام التشغيل Windows Vista.ماذا يمكنك أن تفعل به؟بالتأكيد، يمكنك تجميعه والتبرع بنسخ منه، ولكن هذا مجرد جهد أكبر بخطوة واحدة من نسخ الإصدار بالتجزئة.يمكنك العثور على رمز التحقق من الترخيص وإزالته بشق الأنفس، ولكن هذا شيء فعله بالفعل بعض الأطفال الأذكياء في الثنائيات.استبدل الشعار والرسومات وتظاهر بأنك كتبته بنفسك وقم بتسويقه باسم "Vicrosoft Mista"؟سوف يتم القبض عليك.

يمكنك قضاء قدر كبير من الوقت في قراءة التعليمات البرمجية ومحاولة فهمها و"سرقة الملكية الفكرية" التي استثمرتها Microsoft في تطوير المنتج.لكنك ستصاب بخيبة أمل.ستجد أن الكود كان عبارة عن سلسلة طويلة من القرارات الدنيوية، التي تم اتخاذها واحدًا تلو الآخر.قد يكون البعض أكثر ذكاءً مما تتخيل.قد يتركك البعض تهز رأسك وتتساءل عن نوع القرود التي يستأجرونها هناك.معظمهم سيجعلونك تهز كتفيك وتقول "نعم، هذه هي الطريقة التي تفعل بها ذلك".

ستتعلم في هذه العملية الكثير عن كتابة أنظمة التشغيل، لكن هذا لن يضر Microsoft.

استبدل كلمة "Vista" بكلمة "Leopard" ولا تتغير الفقرات أعلاه شيئًا واحدًا.إنها ليست مايكروسوفت، إنها كذلك برمجة.من المحتمل أن يتمكن نصف الأشخاص الموجودين على هذا الموقع من تطوير نسخة Stack Overflow، مع أو بدون النظر إلى مصدر هذا الموقع.هم فقط لم يفعلوا ذلك.الكود المصدري لمتصفح Firefox وWebKit متاح لأي شخص ليقرأه.اذهب الآن واكتب متصفحك الخاص من الصفر.نراكم في غضون سنوات قليلة.

تطوير البرمجيات هو استثمار للوقت.من الغطرسة المطلقة أن تتخيل أن ما تفعله مميز جدًا لدرجة أنه لا يمكن لأحد استنساخه دون النظر إلى مصدرك، أو حتى أنه سيجعل مهمتهم أسهل بكثير دون قدر قابل للتنفيذ (ويمكن اكتشافه بسهولة) من القص واللصق.

نصائح أخرى

أنا لا أتفق بشدة مع معظم الإجابات المذكورة أعلاه.

صحيح أن كل البرامج يمكن أن تتم سرقتها على الرغم من التشويش، ولكن على الأقل، يصبح الأمر أكثر صعوبة استخراج وإعادة استخدام الأجزاء الفردية من البرنامج وهذه هي النقطة.

ربما يكون استخدام التعتيم أرخص وأقل خطورة من ترك الكود مفتوحًا والقتال في المحكمة بعد أن سرق شخص ما أفضل أجزاء برنامجنا وقام بإجراء توافق خطير.

همسات الكود غير المبهمة:

  • هيا، قم بتحليلي، وأعد استخدامي.ربما يمكنك إنشاء برنامج أفضل باستخدامي.

يقول الكود المبهم:

  • اذهب بعيدا يا صاح.إن استخدام أفكارك الخاصة أرخص من محاولة كسري.

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

في الماضي رأيت الناس يفعلون عدة أشياء:

  1. قم بلصق الكثير من المسافات البيضاء في الجزء العلوي من الصفحة مع رسالة تخبر الأشخاص بأن الرمز غير متوفر، بينما في الواقع تحتاج فقط إلى التمرير لأسفل بضع صفحات للوصول إليه.
  2. يعد تشغيله من خلال برنامج تشفير من نوع ما أمرًا مفيدًا جدًا حيث يمكن تشغيله من خلال وحدة فك التشفير.
  3. هناك طريقة أخرى تتمثل في تقليل أسماء المتغيرات إلى حرف واحد وإزالة المسافات البيضاء (وهذا أيضًا أمر يتعلق بالكفاءة).

هناك العديد من الطرق الأخرى.

في النهاية، من المرجح أن تؤدي جهودك إلى منع المتصفح العادي من رؤية الأشياء الخاصة بك.إذا جاء شخص مخصص، فلن يكون هناك الكثير الذي يمكنك القيام به.سيكون عليك التعايش مع هذا.

نصيحتي هي إنشاء منتج رائع حقًا يجذب أكبر عدد من الأشخاص والتغلب على أي منافسة من خلال الحصول على أفضل منتج/خدمة/مجتمع وليس الكود الأكثر غموضًا.

تواجه دائمًا حقيقة أن أي مستخدم يأتي إلى صفحة الويب الخاصة بك سيقوم بتنزيل بعض الإصدارات العاملة من مصدر Javascript الخاص بك.هم سوف لديك كود المصدر.قد يؤدي التعتيم عليه إلى صعوبة كبيرة في إعادة استخدامه من قبل شخص ما بقصد ذلك يسرق عملك الشاق.ومع ذلك، في كثير من الحالات، يمكن لأي شخص إعادة استخدام المصدر المبهم!أو في أسوأ الحالات يمكنهم حلها يدويًا وفهمها في النهاية.

مثال على موقف مثل حالتك قد يكون خرائط جوجل.من الواضح أن مصدر Javascript غامض.ومع ذلك، بالنسبة للمنطق الخاص/الحساس حقًا، يقومون بدفع البيانات إلى الخادم وجعل الخادم يعالج تلك المعلومات باستخدام XMLHttpRequests (AJAX).مع هذا التصميم، لديك الأجزاء المهمة على جانب الخادم، والتي يتم التحكم فيها بشكل أكثر إحكامًا.

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

لن يساعدك أداة التعتيم على الإطلاق إذا أراد شخص ما معرفة الرمز.لا يزال الرمز موجودًا على جهاز العميل ويمكنهم الحصول على نسخة منه ودراسته في وقت فراغهم.

ببساطة لا توجد طريقة لإخفاء التعليمات البرمجية المكتوبة بلغة Javascript حيث يجب تسليم التعليمات البرمجية المصدر إلى المتصفح للتنفيذ.

إذا كنت تريد إخفاء الرمز الخاص بك، فلديك الخيارات التالية:

1) استخدم بيئة يتم فيها تنزيل التعليمات البرمجية المجمعة (وليس المصدر) إلى العميل، على سبيل المثال.فلاش أو سيلفر لايت.لست متأكدًا من أن هذا مضمون، لكنه بالتأكيد أفضل بكثير من Javascript.

2) لديك واجهة خلفية على جانب الخادم تقوم بالعمل وعميل رفيع يقوم فقط بتقديم الطلبات إلى الخادم.

أود أن أقول نعم، يكفي أن تتأكد أيضًا من ضغط الكود باستخدام أداة مثل دين إدوارد باكر أو مشابه.إذا فكرت في ما هو ممكن باستخدام أدوات مثل .NET Reflector فيما يتعلق بالهندسة العكسية للكود المترجم / IL في .NET، فسوف تدرك أنه لا يوجد شيء يمكنك القيام به لحماية استثمارك بشكل كامل.

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

إن أداة التعتيم على التعليمات البرمجية كافية لشيء يحتاج إلى الحد الأدنى من الحماية، لكنني أعتقد أنه بالتأكيد لن يكون كافيًا لحمايتك حقًا.إذا كنت صبورًا، يمكنك حقًا إزالة التشويش عن الأمر برمته.وأنا متأكد من أن هناك برامج للقيام بذلك نيابة عنك.

ومع ذلك، لا يمكنك منع أي شخص من قرصنة أغراضك لأنه في النهاية سوف يكسر أي نوع من الحماية التي تقوم بإنشائها على أي حال.وهو سهل بشكل خاص في اللغة المكتوبة حيث لا يتم تجميع الكود.

إذا كنت تستخدم لغة أخرى، ربما Java أو .NET، فيمكنك تجربة القيام بأشياء مثل "الاتصال بالمنزل" للتحقق من تطابق رقم الترخيص مع عنوان URL معين.وهو ما ينجح إذا كان تطبيقك عبارة عن تطبيق عبر الإنترنت سيكون متصلاً بالإنترنت طوال الوقت.ولكن من خلال الوصول إلى المصدر، يمكن للأشخاص تجاوز هذا الجزء بسهولة.

باختصار، تعد جافا سكريبت خيارًا سيئًا لما تفعله.
ربما تكون الخطوة التالية لما تفعله هي استخدام الواجهة الخلفية لخدمة الويب للحصول على بياناتك.اسمح لخدمة الويب بالتعامل مع عملية المصادقة/التحقق.يتطلب الأمر القليل من العمل للتأكد من أنه مضاد للرصاص، لكنه كذلك قد عمل

إذا كان هذا لموقع ويب، والذي بطبيعته يجعل عرض الكود الخاص به على بعد نقرة واحدة من القائمة، فهو موجود حقًا أي سبب لإخفاء أي شيء؟إذا أراد شخص ما سرقة التعليمات البرمجية الخاصة بك، فمن المرجح أن يبذل جهدًا لجعل حتى التعليمات البرمجية الأكثر تشوهًا قابلة للقراءة من قبل الإنسان.انظر إلى المواقع التجارية، فهي لا تحجب أكوادها البرمجية، ولا يخرج أحد ويسرق الأكواد البرمجية من تطبيقات جوجل.إذا كنت قلقًا حقًا بشأن سرقة التعليمات البرمجية، فأنا أؤيد كتابتها بلغة مجمعة أخرى.(وهو ما يؤدي بالطبع إلى تدمير كل شيء في تطبيق الويب...) وحتى ذلك الحين، فأنت لست آمنًا تمامًا، فهناك العديد من برامج إلغاء الترجمة المتوفرة.

لذا حقًا، لا توجد طريقة لفعل ما تريد في مواجهة أي شخص لديه الدافع الكافي.

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