কীভাবে আপনি আপনার জাভাস্ক্রিপ্ট / এইচটিএমএল 5 ওয়েব গেমটি অনুলিপি করা বা পরিবর্তন করা থেকে রোধ করবেন?


45

আমি জাভাস্ক্রিপ্ট এবং এইচটিএমএল 5 ব্যবহার করে গেমটি তৈরির পরিকল্পনার মাঝখানে আছি।

আমার বুঝতে সমস্যা হচ্ছে আপনি কীভাবে কাউকে কেবল ওয়েব সার্ভার থেকে জাভাস্ক্রিপ্ট অনুলিপি করা এবং এটির সাথে নিজের গেমটি তৈরি করা (আমার সবচেয়ে বড় উদ্বেগ নয়), বা তাদের নিজস্ব জাভাস্ক্রিপ্ট ফাংশনগুলি প্রতিস্থাপন এবং নির্ভরযোগ্য ক্লায়েন্টের জন্য কোনও আশা ড্যাশ করা থেকে বিরত রাখতে পারেন তা বুঝতে আমার সমস্যা হচ্ছে বন্য যদি গেমটি শেষ পর্যন্ত মাল্টিপ্লেয়ার সমর্থন করে।

জাভাস্ক্রিপ্ট পড়া থেকে কাউকে রোধ করার জন্য কি কিছু করা যেতে পারে?

যদি তা না হয় তবে ক্লায়েন্টের একমাত্র দায়িত্ব ব্যবহারকারীর ইনপুট ক্যাপচার এবং গ্রাফিক্স অঙ্কন করে কোথাও কোনও সার্ভারে সমস্ত গেম প্রসেসিং করা উচিত?


22
আপনি সর্বশেষ অনুচ্ছেদটি সঠিক সম্পর্কে পড়েছেন, এটি ব্যবসায়ের অ্যাপ্লিকেশনগুলির জন্য সত্য এবং গেমসের ক্ষেত্রে এটি সত্য, ক্লায়েন্টকে সর্বদা হোস্টেল হিসাবে বিবেচনা করে।
Nate

4
যদি আমি এটি পড়তে পারি তবে আমার ব্রাউজারে ইতিমধ্যে একটি অনুলিপি রয়েছে। তাহলে আমি এটিকে অন্য কোথাও সংরক্ষণ করতে পারি। আপনি যা কিছু পড়ার অনুমতি দিন তা অনুলিপিও করা যেতে পারে।
বার্গগ্রিনডিকে

উত্তর:


44

সার্ভারে আপনার সমস্ত গেমের ডেটা এবং লজিক রাখুন। ক্লায়েন্টের পাশে থাকা গেমের অংশটি যে কোনও উপায়ে উপযুক্ত সরঞ্জামগুলি ব্যবহার করে অনুলিপি করা যেতে পারে (এটি ফ্ল্যাশ বা জাভাতে হলেও), তাই কেবল এটি গ্রহণ করুন এবং এটি সম্পর্কে খুব বেশি যত্ন করবেন না।

আপনার জাভাস্ক্রিপ্টটি কম অনুলিপিযোগ্য রাখতে, খারাপ পাঠযোগ্যতার কারণে আপনি এটিকে ছোট করতে পারেন । এটি গেমিং সাইটকে দ্রুত ডাউনলোড করার কারণে এটি একটি ভাল অনুশীলন।


4
কোডিং অনুশীলনের উপর নির্ভর করে সার্ভারে থাকা সমস্ত সামগ্রীর পাশাপাশি আপস করা যেতে পারে। কোডটি মাইনাইফ করতে এবং আপত্তি জানাতে কেবল সেই সময়গুলিকেই ডিটার্স করে যা সময় নিতে চায় না এবং যুক্তিগতভাবে এটি কী করছে তা ম্যাপ করে। নীচের লাইনটি হল, যদি আপনি আপনার কোডের বৌদ্ধিক সম্পত্তি অধিকার সম্পর্কে উদ্বিগ্ন হন; এটি ওয়েবে রাখবেন না।
জন

1
এর অর্থ এই নয় যে আপনার উচিত হ্রাস করা উচিত নয়, এটি অলস লোকদের বিরক্ত করে। আপনি সার্ভারে আপনার গেম লজিক প্রসেস করার চেষ্টা করতে পারেন এবং এজ্যাক্সের মাধ্যমে জেসন অবজেক্টগুলি ফিরিয়ে দিতে পারেন, তবে রিটার্নটি এখনও ফায়ারব্যাগের সাথে দেখা যায়। আপনার প্রোডাকশন সংস্করণটি বাতিল করুন তবে নিজের জন্য একটি ভারী মন্তব্য সংস্করণ রাখুন (এটি বজায় রাখা আরও কঠিন করে তোলে)। আপনি লোকদের নিরস্ত করার জন্য কিছু করতে পারেন তবে এটি কখনই 100% নিরাপদ থাকে না।
জন

3
প্রকৃতপক্ষে. মিনিফাইড কোড প্রসারণ এমনকি খুব বেশি প্রচেষ্টা নেয় না। jsbeautifier.org
জেমস

@ জন দয়া করে লক্ষ্য করুন যে কখনও কখনও অলস লোকদের নিরস্ত করা অপ্রাসঙ্গিক, কারণ কিছু গেম একবারে একাই প্রতারণা করার সময় নষ্ট হয়ে যায়, তাই কেবলমাত্র একজন বা অনেকে প্রতারণা করলে এটি প্রাসঙ্গিক নয়।
o0 '

11

কীভাবে আপনি কাউকে কেবল ওয়েব সার্ভার থেকে জাভাস্ক্রিপ্ট অনুলিপি করা বা এটির মাধ্যমে নিজের গেম তৈরি করা থেকে বিরত রাখতে পারেন (আমার সবচেয়ে বড় উদ্বেগ নয়)

আইন এখানেই সহায়তা করে। বাস্তবে এটি প্রায়শই ঘটে বলে মনে হয় না।

বা তাদের নিজস্ব জাভাস্ক্রিপ্ট ফাংশনগুলি প্রতিস্থাপন করা এবং যদি গেমটি শেষ পর্যন্ত মাল্টিপ্লেয়ারকে সমর্থন করে তবে বন্যের মধ্যে নির্ভরযোগ্য ক্লায়েন্টদের জন্য কোনও আশা ড্যাশ করে।

ঠিক এই কারণেই বন্যে কোনও নির্ভরযোগ্য ক্লায়েন্ট নেই। এই স্বপ্ন এখন ছেড়ে দিন। :)


আইনটি হোস্টিং সাইট এমন একটি দেশে যখন বৌদ্ধিক সম্পত্তির অধিকার সম্পর্কে খুব বেশি যত্নশীল না হয় বা অন্য যে কোনও কারণে আপনার দেশের বিরোধী হয় তখন আইনটি খুব বেশি কার্যকর হবে না। এমনকি যদি এটি না হয়, একটি (সম্ভাব্য আন্তর্জাতিক) আইনী পদক্ষেপ গ্রহণের জন্য যে ব্যয়টি এখানে এই প্রশ্নটি জিজ্ঞাসা করবে তার আর্থিক সংস্থান ছাড়িয়ে যাওয়ার ব্যয় সম্ভবত অনেক বেশি।
পল লেগাতো

উত্তরের উদ্দেশ্যটি আইনী পদক্ষেপ গ্রহণের সুপারিশ করার পক্ষে এতটা ছিল না, তবে পরামর্শ দেওয়া হয়েছিল যে এই জাতীয় সফটওয়্যারটি লক করার চেষ্টা করা বেশিরভাগ অর্থহীন, কমপক্ষে কিছু অংশ কারণ যারা এটি অনুলিপি করবেন তাদের অনেকে আইন দ্বারা নিরুৎসাহিত হয়েছেন, কিন্তু ক্লায়েন্টদের কারণেও তারা জাভাস্ক্রিপ্ট ব্যবহার করুন বা না করুন বিপরীত প্রকৌশলী হতে পারে।
কাইলোটন

8

অন্য সবাই যেমন সুপারিশ করেছে; যতটা সম্ভব সার্ভার-সাইড হিসাবে কোড রাখুন।

কোড অনুলিপি মোকাবেলা করার জন্য আমি যে পদ্ধতিটি ব্যবহার করেছি সেটি কিছুটা অদ্ভুত তবে এটি এখনও পর্যন্ত ভালভাবে কাজ করেছে।

  • সার্ভার-সাইড, অনন্য আইডি উত্পন্ন করুন এবং এটি পরে সংরক্ষণ করুন।
  • সার্ভার-সাইড, এইচটিএমএল রেন্ডারিংয়ের সময় স্ক্রিপ্ট উপাদানটিতে অনন্য আইডি যুক্ত করুন।
  • ক্লায়েন্ট-সাইড, একটি ওয়েবস্কট সংযোগ তৈরি করুন এবং সার্ভারে অনন্য আইডিটি দিন।
  • সার্ভার-সাইড, বর্তমান তালিকার বিপরীতে ম্যাচ আইডি।
  • যদি মিল না পাওয়া যায় তবে সংযোগটি বন্ধ করুন।
  • যদি ম্যাচ হয় পাওয়া যায় নি, আপনার "সঠিক" এক এবং বাতিল আইডি সহ বার্তা হ্যান্ডলার প্রতিস্থাপন করুন।
  • আপনার গোপন কোডটি ক্লায়েন্টকে JSON হিসাবে স্ট্রিম করুন, {"ফানক": "ফাংশন () {ডুস্টফ ();}"}
  • ক্লায়েন্ট-সাইড, বার্তাগুলির জন্য নজর রাখুন, যদি সেগুলিতে "ফানক" থাকে তবে এটিকে ব্যাখ্যা করুন।

এখন আপনার গোপন কোডটি ক্লায়েন্ট-সাইড চালাচ্ছে এবং ভিউ-উত্স বা পরিদর্শক / কনসোলগুলিতে প্রদর্শিত হবে না। কোডটি পাওয়ার এখনও অনেক উপায় রয়েছে তবে এটি বেশ খানিকটা কঠিন।


উপরের সমাধান থেকে যদি আমার কিছু হস্তক্ষেপ করা প্রয়োজন; আমি সত্যিকারের ওয়েবসকেটকেও সংযুক্ত করব এবং একটি "নকল ক্লায়েন্ট" তৈরি করার চেষ্টা করব, বা একটি ব্রাউজারে ফায়ারব্যাগ ডিবাগিং সরঞ্জাম ব্যবহার করব এবং মানগুলি পরীক্ষা করার জন্য স্ক্রিপ্টটি বন্ধ করব stop
বার্গগ্রিনডি কে

আপনি কোনও ভুয়া ক্লায়েন্ট তৈরি করতে পারবেন না যদি আপনি পৃষ্ঠায় লোড সময়ে উত্পন্ন এবং স্ক্রিপ্ট সংযোগের সময় টস করা হয় তবে কোন অনন্য আইডি বর্তমানে উপলব্ধ তা কোনওভাবেই অনুমান করতে না পারলে। এছাড়াও, স্ক্রিপ্টটি থামানো এবং মানগুলি খুঁজে পাওয়া মুশকিল, যেহেতু আপনি একটি বেনাম ফাংশন প্রকাশ করছেন। যেমনটি আমি বলেছিলাম, কোডটি পাওয়ার আরও অনেক উপায় রয়েছে, এটি কেবল আরও কঠিন। বেশিরভাগ অংশের পক্ষে, আপনার কোডটি "যথেষ্ট নিরাপদ" হওয়া উচিত। ক্লায়েন্ট-সাইড কোডের সাহায্যে আপনি এর চেয়ে বেশি কিছু করতে পারবেন না।
স্টিফেন বেলঞ্জার

কোনও নকল ক্লায়েন্ট লিখতে পারা খুব সহজ হবে যা সার্ভার থেকে আসল ক্লায়েন্টকে লোড করে এবং প্রতিবার এটি শুরু হওয়ার সাথে সাথে বর্তমান গোপনীয় মানটি স্ক্র্যাপ করে।
পল লেগাতো

আমি এটি "সহজ" এতটা "অসম্ভব" হিসাবে বলব না। আমি যেমন বলেছি, এর চারপাশে উপায় আছে। নিখুঁত সুরক্ষিত সিস্টেমের মতো জিনিস নেই। কেবল পর্যাপ্তরূপে অস্পষ্ট ইন্টারফেসগুলি যেমন বেশিরভাগ হ্যাক করার জন্য এটি খুব বেশি প্রচেষ্টা খুঁজে পাবে। এই ক্ষেত্রে, আপনি কোডের বিটগুলি স্ট্রিমিং করতে যাবেন, সুতরাং কোনও হ্যাকারকে কোডটি একটি কার্যকর কাঠামো হিসাবে গ্রহণ এবং ব্যবস্থা করার জন্য একটি ক্লায়েন্ট তৈরি করতে হবে। আপনার প্রয়োজনমতো কোড স্ট্রিম চাইলে হ্যাকারের সম্পূর্ণ কোড ডাম্পের তাত্ক্ষণিকভাবে অ্যাক্সেস না পাওয়া উচিত।
স্টিফেন বেলঞ্জার

3

আপনার গেমের কোডটি সুরক্ষিত থাকবে তা যুক্তিযুক্তভাবে নিশ্চিত হওয়ার একমাত্র উপায় হ'ল একটি ক্লায়েন্ট / সার্ভার ধরণের গেম তৈরি করা এবং সার্ভারে যতটা সম্ভব কোড স্থাপন করা put এবং অবশ্যই, সেই সার্ভারটি সুরক্ষিত করুন!

মূল সমস্যাটি হ'ল কোডটি যদি আমার কম্পিউটারে চলমান থাকে তবে আমি এটি পরিদর্শন করতে পারি, এটি ডিকম্পাইল করতে এবং এটি কীভাবে কাজ করে তা নির্ধারণ করতে পারি। এটি জাভাস্ক্রিপ্ট, ফ্ল্যাশ, সি ++, অন্য যে কোনও কিছুর জন্য সত্য। প্রকৃতপক্ষে, এমএমও বিকাশে (এটি যেখানে আমার পেশাদার অভিজ্ঞতার বেশিরভাগ অংশ রয়েছে) প্রথম থেকেই ধারণাটি হ'ল ক্লায়েন্ট আপোসড: আপনি ক্লায়েন্টের জন্য যা কিছু লিখেছেন তা ইতিমধ্যে যার কাছে চান তা হ'ল দূষিত বা না.

মাইনিফিং কোড এমন লোকদের বিরুদ্ধে খুব অল্প পরিমাণ সুরক্ষা সরবরাহ করে যা সেখানকার অনেকগুলি সরঞ্জামের মধ্যে একটি ব্যবহার করে এটি আনমিনাইফাই করতে খুব অলস হয়। (তবে প্রোডাক্ট কোডটি এর ডেটার পাদদেশ হ্রাস করতে মিনিমাইজ করা উচিত ))

তবে আপনি যদি এমন পরিস্থিতিতে থাকেন যেখানে বলুন, আপনার বস কিছু প্রকারের কোড সুরক্ষা চান, আপনি "জাভাস্ক্রিপ্ট অবফসেক্টর" গুগল করতে পারেন - সেখানে অনেকগুলি নিখরচায় এবং বেতনের সফ্টওয়্যার রয়েছে যা জেএসকে কমপক্ষে অভেদ্য হিসাবে তৈরি করে makes ফ্ল্যাশ যেমন হয় তেমনি পচা


আমি কেবল উল্লেখ করতে চাই যে সি ++ জাভাস্ক্রিপ্টের মতো একই স্তরে নেই। সি ++ অ্যাসেমব্লিতে সংকলন করে, যা গেমটির যুক্তি বোঝার জন্য কারও পড়া দরকার। সি ++ এর প্রতিটি বিবৃতি সমাবেশে একাধিক লাইন তৈরি করতে পারে, যা এটি একটি খুব সময়সাপেক্ষ কাজ করে। জাভাস্ক্রিপ্ট অবলম্বন করা একই নয়, কারণ এটি একই ভাষা। যে কেউ এটিকে "সুন্দরী করতে" এবং প্রায় মানব-পঠনযোগ্য বিবৃতি পড়া শুরু করতে পারেন।
টমটস্যাগ্ক

3

কোড অবলম্বনের এই সমস্ত আলোচনা বাদে প্রতিটি ফাইলের শীর্ষে একটি খুব স্পষ্ট কপিরাইট ঘোষণার বিষয়টি নিশ্চিত করে নিশ্চিত করুন যে লাইসেন্সটি পরিবর্তন বা বাণিজ্যিক ব্যবহারের অনুমতি দেয় না। যদি কেউ এটির অনুলিপি করার চেষ্টা করে তবে এটি আপনাকে আইনী সাপোর্ট দেয়। আপনি যদি এটি নিয়ে আদালতে যেতে রাজি না হন তবে এই পুরো প্রশ্নটি বেশিরভাগই একাডেমিক।


এটি মূল্যবান জন্য এটি ঠিক, তবে এটি খুব বেশি নয়। বৌদ্ধিক সম্পত্তির ধারণাটি প্রচলিতভাবে অনেক দেশে স্বীকৃত নয় এবং যে কোনও ক্ষেত্রে আদালতের মামলার আইনি ব্যয় সম্ভবত এই সাইটের পোস্টার যা পাওয়া যায় তার চেয়ে অনেক বেশি, বিশেষত আক্রমণকারী অন্য কোনও দেশে থাকলে।
পল লেগাতো

0

আমি মনে করি আপনি যদি আপনার গেমটি মাল্টি প্লেয়ার করেন তবে এটি আপনার গেমটির যুক্তিটি সার্ভারে রেখে দেয় আপনি সম্ভবত এটি চুরি করার জন্য কমপক্ষে আবেদন করবেন। আপনি ক্লায়েন্টকে সত্যই বিশ্বাস করতে পারবেন না। যেমন কেউ ইতিমধ্যে উল্লেখ করেছেন, জাভা এবং ফ্ল্যাশের মতো সংকলিত ভাষার জন্যও সরঞ্জাম রয়েছে যা বাইট কোড থেকে কোডটির পাঠ্যকে প্রকৃতির বিপরীত করতে পারে।


-1

আপনার একটি জাভাস্ক্রিপ্ট মিনিফায়ার ব্যবহার করা উচিত। আপনার পছন্দ মতো একটি নির্দ্বিধায় উপলভ্য অনেক বিকল্প রয়েছে। আপনাকে এখানে কিছু গবেষণা বাঁচাতে আপনি ইয়াহু মিনিফায়ার চেষ্টা করতে পারেন । আমি এটি নিজে চালাইনি তবে আমি ধরে নিয়েছি এটি আপনার প্রয়োজন অনুসারে করবে। লক্ষ্য 1) ফাইলের আকার এবং 2) অপ্রচলিত কোড হ্রাস করা। এটি সমস্ত সাদা স্থান, মন্তব্যগুলি মুছে ফেলা এবং সংক্ষিপ্ত, অযৌক্তিক নামগুলির সাথে পরিবর্তনশীল নামগুলি প্রতিস্থাপনের মাধ্যমে সম্পন্ন হয়।

বেশিরভাগ ওয়েব অ্যাপ্লিকেশনগুলিতে আজ জাভাস্ক্রিপ্টের একটি উল্লেখযোগ্য পরিমাণ রয়েছে এবং তাদের আইপি সুরক্ষার চেষ্টা করার জন্য এগুলির মতো সরঞ্জামগুলি ব্যবহার করে। অন্যরা যেমন বলেছে আপনার সর্বদা জিজ্ঞাসা করা উচিত, "আমি কি সার্ভারে এটি করতে পারি?" গুরুত্বপূর্ণ বা সংবেদনশীল কার্যক্রমের জন্য, তবে আমি বিশ্বাস করি এটির কিছুটা সুরক্ষা দেওয়া উচিত offer


7
অস্পষ্টতা দ্বারা সুরক্ষা সুরক্ষার পক্ষে সম্ভাব্যতাকে অস্পষ্ট করে। :)
রাশিও

1
অনুগ্রহকরে. আমি এই উদ্ধৃতিটি সর্বদা শুনি তবে এটি একেবারেই সত্য নয়। সত্যতা জেএসকে অস্পষ্ট করে বললে কমপক্ষে কিছু লোক নিরস্ত হয়।

2
মিনিফায়ার তাকে সাহায্য করে না। আমি বিশ্বাস করি বেশিরভাগ গুরুতর "গুরুতর" লোকেরা কীভাবে সেই স্ক্রিপ্টগুলি আবার "প্রসারিত" করতে পারেন knows
বার্গগ্রিনডি কে

1
@ সার্জিও: আপনি এই উক্তিটি সর্বদা শুনবেন কারণ আপনি জানেন, এটি সত্য । এটি "কিছু" লোককে সত্যই বাধা দেবে, তবে "কিছু" লোককে নিরস্ত করা অর্থহীন: আপনি একবার ফাটলে আপনি নীচে যাবেন।
o0 '

-1

গুগল ক্লোজার সংকলক ব্যবহার করুন http://code.google.com/closure/compiler/ এটি কেবল একটি জেএস মিনিমাইজার নয়;)

ক্লোজার কম্পাইলার ব্যবহারের সুবিধা কী কী?

  1. দক্ষতা. বন্ধ সংকলকটি আপনার জাভাস্ক্রিপ্ট ফাইলগুলির আকার হ্রাস করে এবং এগুলিকে আরও দক্ষ করে তোলে, আপনার অ্যাপ্লিকেশনটিকে দ্রুত লোড করতে সহায়তা করে এবং আপনার ব্যান্ডউইথের প্রয়োজনীয়তা হ্রাস করে।

  2. কোড চেকিং। সমাপ্তি সংকলক অবৈধ জাভাস্ক্রিপ্টের জন্য সতর্কতা এবং সম্ভাব্য বিপজ্জনক ক্রিয়াকলাপগুলির জন্য সতর্কতা সরবরাহ করে, আপনাকে জাভাস্ক্রিপ্ট তৈরি করতে সহায়তা করবে যা কম বগী এবং বজায় রাখা সহজ .1


-1

অথবা আপনি আপনার গেমটি তৈরি করতে গেম মেকার এইচটিএমএল 5 এর মতো কিছু ব্যবহার করতে পারেন যা আপনার জন্য কোডটিকে প্রশংসিত করবে। তার মানে এটি কোডটি মানুষের কাছে অপঠনযোগ্য করে তুলবে। এবং এটি সম্পাদনা করা অসম্ভব হয়ে উঠবে।


2
-1 অস্পষ্টতা কেবল এতদূর যাবে। এটি অবশ্যই গেমটি অনুলিপি করা বা পরিবর্তিত হওয়া থেকে রক্ষা করবে না - যেমনটি এই প্রশ্নের অন্যান্য অনড় উত্তরগুলিতে উল্লিখিত হয়েছে।
ডপপেলগ্রিনিয়ার

-1

মালিকানাধীন যে কোনও কিছুতে সার্ভার-সাইড রাখা উচিত। ক্লায়েন্ট পক্ষ আপনি গেমটি তাদের ব্যবহারের সুবিধার্থে এটির জন্য যথেষ্ট সরবরাহ করেন।


-1

সার্ভারে সমস্ত কিছু রাখার ক্ষেত্রে পারফরম্যান্স সমস্যা হতে পারে এবং ওয়েবের সম্ভাব্যতাকে আমরা সত্য যেমন ব্যবহার করি তেমন ব্যবহার করে না।

আপনি আপনার কোডটি সি ++ এ লিখতে এবং বাইনারিগুলিতে সংকলন করতে পারেন।

নেটিভ ক্লায়েন্ট (এনএসিএল)।

Https://stackoverflow.com/questions/9018537/how-to-run-c-program-on-the-web-inside-a-browser দেখুন


GDSE এ আপনাকে স্বাগতম। ওপি বিশেষত জাভাস্ক্রিপ্ট সম্পর্কে জিজ্ঞাসা করছে; সুতরাং তারা সম্ভবত সি ++ এ পুনরায় লিখতে এবং NaCl ব্যবহার করতে পারে , সেই সমাধানটি যা বলা হয়েছে তা সত্যিই প্রয়োজনগুলিকে সম্বোধন করে না। এছাড়াও, উত্তরগুলি যথাসম্ভব যথাসম্ভব যথাযথভাবে থাকা উচিত - ন্যাকএলকে উল্লেখ করা এবং একটি লিঙ্ক ডাম্প করা নাসিএল কী বা কেন এটি সহায়তা করতে পারে সে সম্পর্কে একটি সংক্ষিপ্ত প্রস্তাব দেওয়ার মতো ভাল নয়।
পিকালেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.