আমি কীভাবে আমার সার্ভারে এইচটিএমএল 5 গেম থেকে স্কোর প্রেরণকে সুরক্ষা দেব


13

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

উত্তর:


18

সার্ভারে কেবল একটি পূর্ণসংখ্যার স্কোর প্রেরণ করবেন না। গেমের পরিসংখ্যানগুলির একটি সংগ্রহ পাঠান যা স্কোরটি যাচাই করার জন্য ব্যবহার করা যেতে পারে real বা স্কোর গণনার জন্য আপনি কিছু প্রাক-ভাগ করা কী প্রয়োগ করতে পারেন । আপনি পুরো খেলা জুড়ে ইনক্রিমেন্টাল স্কোর এবং পরিসংখ্যান প্রেরণ করতে এবং বৃদ্ধি যুক্তিসঙ্গত কিনা তা নিশ্চিত করতে পারেন।

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

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



@ বাইট 6 ob কোনও ধরণের অবরুদ্ধকরণ বা এনক্রিপশন আপনার খেলার কোডটি খেলার সময় গেমের ডেটা পরিবর্তন করতে কোনও ডিবাগার থেকে রক্ষা করবে না। গেমপ্লেটি যদি ক্লায়েন্টের সাথে ঘটে তবে এই ধরণের প্রতারণা রোধ করা অসম্ভবভাবে অসম্ভব। একটি জাভাস্ক্রিপ্ট-সক্ষম ব্রাউজার কোনও বিশ্বস্ত কম্পিউটিং ডিভাইস নয়।
MarkR

10

যেমন বাইট 56 বলেছেন: "ক্লায়েন্টকে কখনই বিশ্বাস করবেন না", তবে:

কখনই ক্লায়েন্টকে বিশ্বাস করা দামে আসে না:
সার্ভারে সমস্ত গেম খেললে আপনার অবকাঠামোগত ব্যয় অনেক বেড়ে যায়।

ধরে নিই যে বেশিরভাগ খেলোয়াড় প্রতারণা করবেন না
এবং শীর্ষস্থানীয় উচ্চ স্কোরটি অল্প সময়ের পরে নিষ্পত্তি হবে এবং অনেক পরিবর্তন বন্ধ করবে

একটি মাঝারি উপায় আছে।

গেমগুলি রেকর্ড করুন (ক্লায়েন্টের উপরে)।
(গেমের ধরণের উপর নির্ভর করে যা সুপার ইজি (উদাহরণস্বরূপ দাবা) বা কিছুটা জটিল (উদাহরণস্বরূপ একটি মাল্টিপ্লেয়ার এফপিএস) হতে পারে
তবে এটি সর্বদা কার্যকর হয় able)

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

বেশিরভাগ নাটকটির জন্য আপনার কোনও অতিরিক্ত সার্ভার সাইড রিসোর্সের প্রয়োজন হবে না
তবে শীর্ষস্থানীয় স্কোরগুলি বৈধ কিনা তা নিশ্চিত করতে পারেন।


2
অন্য কথায়, শীর্ষস্থানীয় স্কোরগুলি ব্যতীত অন্য কোনও কারণে যদি তারা প্রতারণা করে তবে কে তাদের যত্নশীল করে (কেন তারা যেভাবেই তা করবে?) তাই আপনার যাচাই করতে হবে কেবলমাত্র সেগুলি।
ধাওয়া করা

4

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

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


4

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

সার্ভারে যাচাই করুন। গেম ডেভেলপার ২০১২ এর সেপ্টেম্বরে "আপনার অনলাইন গেমটি স্কেল করুন" - এ জোয়েল পলোনির কৌশলগুলি ভাল লেখা ছিল


2

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

অবশ্যই, সার্ভারে চলমান একটি গেমটি বিকাশ করা আরও জটিল, খেলোয়াড়দের প্রতারণা থেকে বিরত রাখুন।


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