هل تريد تمرير البيانات غير المتلاعب بها من تطبيق Flash إلى الخادم؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

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

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

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

المحلول

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

لن يكون هناك شيء مقاوم تمامًا للاختراق، بغض النظر عما تفعله، ولكن هذا سيوقف الجميع باستثناء الأشخاص الأكثر تصميمًا.

تحديث: @علامة:يدعم Flash SSL محليًا.

نصائح أخرى

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

تحقق من حزمة AS3Crypto على http://code.google.com/p/as3crypto/.لم أجربه، لكن هذه الحزمة تدعي أنها تدعم (جزئيًا) بروتوكول TLS 1.0.

سيوفر TLS نفقًا آمنًا بين تطبيق Flash والخادم.http://en.wikipedia.org/wiki/Secure_Sockets_Layer

jcnnghm أنت عادة لا ترغب في استخدام تشفير المفاتيح العامة (RSA ، DSA) لتشفير البيانات بالجملة بسبب الوقت الحسابي الكبير.يجب استخدام تشفير المفتاح العام في مرحلتي المصافحة والاتفاق على المفاتيح في بروتوكول الأمان، ولكن يجب التعامل مع تشفير البيانات المجمعة بواسطة تشفير متماثل مثل AES وTDES.تعمل بروتوكولات TLS وSSL بهذه الطريقة.

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

أنفقت صناعات الموسيقى والأفلام عشرات الملايين على إدارة الحقوق الرقمية (DRM) التي تم حلها بواسطة هواة المنزل في أيام / أسابيع.إذا لم يتمكنوا من الحماية هُم أشياء...

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

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

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

قد يكون الجانب السلبي في هذا هو وجود عدد كبير جدًا من اللاعبين المتزامنين مما يؤدي إلى تقليل سرعة رد الخادم وبالتالي إجراء "مهلات وهمية" + ترك خادم الألعاب مفتوحًا لهجمات DoS.

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

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

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

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

آمل أن يكون هذا مفيدًا لأفكارك.

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