গুগল প্লে ব্যবহারকারী এবং ডেভেলপার উভয়ের নিরাপত্তা নিশ্চিত করতে প্রতিশ্রুতিবদ্ধ। আমরা বুঝি যে, একটি সফল অ্যাপ ব্যবসা গড়ে তোলা একটি বিশ্বস্ত প্ল্যাটফর্মের উপর নির্ভর করে—এমন একটি প্ল্যাটফর্ম যা ক্ষতিকারক কার্যকলাপের বিরুদ্ধে সক্রিয়ভাবে প্রতিরোধ গড়ে তুলে আপনার বিনিয়োগের উপর লাভ সুরক্ষিত করে।
এই নথিতে আপনার বিলিং ইন্টিগ্রেশনের উপর আক্রমণ প্রতিরোধ করার এবং আপনার অ্যাপে অপব্যবহারের প্রভাব কমানোর জন্য সুপারিশসমূহ বর্ণনা করা হয়েছে।
আপনার সুরক্ষা ব্যবস্থা উন্নত করুন
নিম্নলিখিত এপিআই এবং টুলগুলো আপনার অ্যাপের ঝুঁকি কমাতে পারে:
- বাতিলকৃত ক্রয় এপিআই : বাতিলকৃত অর্ডারগুলিতে অ্যাক্সেস প্রত্যাহার করুন।
- অস্পষ্ট অ্যাকাউন্ট আইডি : অল্প সময়ের মধ্যে একই অ্যাকাউন্ট থেকে একাধিক ডিভাইস কেনাকাটা করলে তা শনাক্ত করতে সাহায্য করে।
- ব্যাকএন্ড কনসাম্পশন : Purchases.products:consume-এর মতো টুলগুলো বিজনেস লজিককে আপনার সুরক্ষিত ব্যাকএন্ডে স্থানান্তর করে, যা ক্লায়েন্ট-সাইড টেম্পারিং প্রতিরোধ করে। এই প্ল্যাটফর্ম এপিআইগুলো ব্যবহার করার পাশাপাশি, অননুমোদিত অ্যাক্সেস থেকে আপনার ইন্টিগ্রেশনগুলোকে আরও সুরক্ষিত করতে নিম্নলিখিত সেরা অনুশীলনগুলো গ্রহণ করুন।
অবস্থান জালিয়াতি প্রতিরোধ করুন
গুগল প্লে-তে অন্তর্নির্মিত সুরক্ষা ব্যবস্থা রয়েছে, যা অসাধু ব্যক্তিদের ভুয়া অবস্থান ব্যবহার করে আঞ্চলিক মুদ্রার পার্থক্যের সুযোগ নেওয়া (যা লোকেশন স্পুফিং নামেও পরিচিত), সাবস্ক্রিপশন প্রমোশন ও প্রণোদনার অপব্যবহার করা এবং গিফট কার্ড কেলেঙ্কারির চেষ্টা করা থেকে বিরত রাখে।
সংবেদনশীল লজিক আপনার ব্যাকএন্ডে স্থানান্তর করুন
আপনার অ্যাপ ডিজাইন যতটা অনুমতি দেয়, সংবেদনশীল ডেটা এবং লজিক আপনার নিয়ন্ত্রিত একটি ব্যাকএন্ড সার্ভারে সরিয়ে নিন। ফ্রন্টএন্ড ডিভাইসে আপনার যত বেশি ডেটা এবং লজিক থাকবে, তা পরিবর্তন বা বিকৃত হওয়ার ঝুঁকি তত বাড়বে।
উদাহরণস্বরূপ, একটি অনলাইন দাবা গেমে ফ্রন্টএন্ড থেকে সবসময় বৈধ চাল পাওয়ার উপর ভরসা না করে, ব্যাকএন্ডেই সমস্ত চাল যাচাই করা উচিত।
এছাড়াও, যদি আপনি কোনো দুর্বলতা বা নিরাপত্তাজনিত সমস্যা খুঁজে পান, তবে আপনার সিস্টেমের নকশার ওপর নির্ভর করে ফ্রন্টএন্ডের চেয়ে ব্যাকএন্ডে ডিবাগ করা, সমাধান করা এবং আপডেট স্থাপন করা সহজতর হতে পারে।
অধিকার প্রদানের আগে ক্রয় যাচাই করুন।
সংবেদনশীল ডেটা এবং লজিকের একটি বিশেষ ক্ষেত্র যা ব্যাকএন্ডে পরিচালনা করা উচিত, তা হলো ক্রয় যাচাইকরণ এবং প্রাপ্তিস্বীকার। একজন ব্যবহারকারী ক্রয় করার পরে, আপনার নিম্নলিখিত কাজগুলো করা উচিত:
- সংশ্লিষ্ট পারচেজ টোকেনটি আপনার ব্যাকএন্ডে পাঠান। এর মানে হলো, আপনাকে সমস্ত কেনাকাটার জন্য পারচেজ টোকেনের মানগুলোর একটি রেকর্ড রাখতে হবে।
- যাচাই করুন যে বর্তমান ক্রয়ের purchaseToken মানটি পূর্ববর্তী কোনো purchaseToken মানের সাথে মেলে না। purchaseToken বিশ্বব্যাপী অনন্য, তাই আপনি নিরাপদে এই মানটি আপনার ডেটাবেসে প্রাইমারি কী হিসাবে ব্যবহার করতে পারেন।
- ক্রয়টি বৈধ কিনা তা গুগলের কাছে যাচাই করতে Google Play Developer API-এর Purchases.products:get অথবা Purchases.subscriptionsv2:get এন্ডপয়েন্টগুলো ব্যবহার করুন।
- যদি আপনি বিশ্বাস করেন যে ক্রয়টি বৈধ, অতীতে ব্যবহৃত বা প্রক্রিয়াজাত হয়নি এবং ব্যবহারকারী আপনার সমস্ত যোগ্যতা ও জালিয়াতি যাচাইয়ে উত্তীর্ণ হন, তাহলে আপনি নিরাপদে অ্যাপের ভেতরের আইটেম বা সাবস্ক্রিপশনটির অধিকার প্রদান করতে পারেন।
- যোগ্যতা এবং অপব্যবহার যাচাইকরণ: ব্যবহারকারী আইটেমটির জন্য এখনও যোগ্য কিনা তা যাচাই করুন। আপনি যদি obfuscatedAccountId বা obfuscatedProfileId দিয়ে বিলিং ফ্লো কনফিগার করে থাকেন, তবে পরীক্ষা করে দেখুন যে পারচেজ ম্যাপিংটি আপনার সিস্টেমের প্রত্যাশিত ইউজার অ্যাকাউন্টের সাথে মেলে কিনা। আপনার ব্যাকএন্ডের জন্য প্রয়োজনীয় যেকোনো অতিরিক্ত অপব্যবহার, ঝুঁকি বা নিরাপত্তা যাচাইকরণ সম্পাদন করুন।
- অবৈধ ক্রয়ের জন্য সুস্পষ্ট রিফান্ড: যদি ক্রয়টি আপনার ভ্যালিডেশন বা অ্যাবিউজ চেক-এ ব্যর্থ হয়, তবে এনটাইটেলমেন্ট প্রদান করবেন না। স্বীকৃতির অভাবে ক্রয়টি স্বয়ংক্রিয়ভাবে রিফান্ড হতে দেওয়ার পরিবর্তে (যা একটি অস্পষ্ট বিষয়, কারণ এটি প্রসেসিং টাইমআউটের কারণেও হতে পারে), Orders:refund এন্ডপয়েন্ট (বা অনুরূপ কোনো প্লে ডেভেলপার এপিআই) ব্যবহার করে ক্রয়টি সুস্পষ্টভাবে রিফান্ড করুন এবং
revokeপ্যারামিটারটিtrueতে সেট করুন।revokeপ্যারামিটার সেট করা নিশ্চিত করে যে অ্যাক্সেস প্রত্যাহার করা হয়েছে, ফলে ব্যবহারকারীর আর ক্রয়টির উপর কোনো এনটাইটেলমেন্ট থাকে না এবং এটি গুগল প্লে-কে একটি স্পষ্ট সংকেত দেয় যে ক্রয়টি ডেভেলপার দ্বারা প্রত্যাখ্যাত হয়েছে।
- সাবস্ক্রিপশনের ক্ষেত্রে, Purchases.subscriptionsv2:get-এ যখন linkedPurchaseToken সেট করা হয়, তখন আপনার ডাটাবেস থেকে linkedPurchaseToken-টি মুছে ফেলা এবং এর জন্য প্রদত্ত এনটাইটেলমেন্ট প্রত্যাহার করা উচিত, যাতে একাধিক ব্যবহারকারী একই ক্রয়ের জন্য যোগ্য না হন।
- আপনার কেবল তখনই এনটাইটেলমেন্ট মঞ্জুর করা উচিত যখন ক্রয়ের অবস্থা 'ক্রয়কৃত' (PURCHASED) হয় এবং 'অপেক্ষমান' (PENDING) ক্রয়গুলো সঠিকভাবে পরিচালনা করা নিশ্চিত করতে হবে। যদি 'বাতিলকৃত' (CANCELED) ক্রয়ের সংখ্যা হঠাৎ করে বেড়ে যায়, তাহলে হতে পারে আপনি এমন সময়ে এনটাইটেলমেন্ট মঞ্জুর করছেন যখন ক্রয়টি তখনও 'অপেক্ষমান' (PENDING) অবস্থায় রয়েছে। আপনি 'অপেক্ষমান লেনদেন পরিচালনা' (Handling pending transactions) অংশে এ বিষয়ে আরও তথ্য পেতে পারেন।
এনটাইটেলমেন্ট দেওয়ার পর, যদি আপনি কোনো ব্যবহারযোগ্য পণ্য ব্যবহার করতে এবং তার স্বীকৃতি দিতে চান, তাহলে আপনার সুরক্ষিত ব্যাকএন্ড সার্ভারে Purchases.products:consume প্লে ডেভেলপার এপিআই ব্যবহার করুন। কোনো ব্যবহার-অযোগ্য পণ্য বা সাবস্ক্রিপশনের স্বীকৃতি দেওয়ার জন্য, আপনার সুরক্ষিত ব্যাকএন্ড সার্ভারে প্রাসঙ্গিক প্লে ডেভেলপার এপিআই এন্ডপয়েন্ট, অর্থাৎ Purchases.products:acknowledge অথবা Purchases.subscriptions:acknowledge, কল করুন। স্বীকৃতি দেওয়া আবশ্যক, কারণ এটি গুগল প্লে-কে জানিয়ে দেয় যে ব্যবহারকারীকে ক্রয়ের জন্য এনটাইটেলমেন্ট দেওয়া হয়েছে। এনটাইটেলমেন্ট দেওয়ার পরপরই আপনার ক্রয়ের স্বীকৃতি দেওয়া উচিত।
মনে রাখবেন যে, যদিও আপনি আপনার অ্যাপের মাধ্যমে ক্লায়েন্ট সাইডে কেনাকাটাটি স্বীকার বা গ্রহণ করতে পারেন, সার্ভার সাইড এপিআই (API) দুর্বল নেটওয়ার্ক সংযোগ এবং ক্ষতিকারক কার্যকলাপের মতো সমস্যাগুলির বিরুদ্ধে অতিরিক্ত সুরক্ষা প্রদান করে। উদাহরণস্বরূপ, ধরুন একজন ব্যবহারকারী আপনার অ্যাপ থেকে একটি আইটেম কিনেছেন, কিন্তু কেনাকাটাটি যাচাই করার সময় তার নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হয়ে গেল। সার্ভার অ্যাকনলেজমেন্ট ছাড়া, স্বীকৃতি প্রক্রিয়াটি সম্পূর্ণ করার জন্য তাকে অ্যাপের মাধ্যমে আবার লগ ইন করতে হতে পারে। অন্যথায়, যদি ব্যবহারকারী তিন দিনের মধ্যে আবার লগ ইন না করেন, তাহলে কেনাকাটার স্বীকৃতির অভাবে অর্থ স্বয়ংক্রিয়ভাবে ফেরত হয়ে যায়। সার্ভার অ্যাকনলেজমেন্ট এই পরিস্থিতি প্রতিরোধ করে, কারণ গুগল প্লে সার্ভারকে কেনাকাটাটি বৈধ বলে জানানোর সাথে সাথেই এটি স্বীকৃতি পাঠিয়ে দেয়।
ক্রয় স্বীকৃতি এবং ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ক্রয় প্রক্রিয়াকরণ দেখুন।
আপনার আনলক করা বিষয়বস্তু সুরক্ষিত রাখা
ক্ষতিকর ব্যবহারকারীদের দ্বারা আপনার আনলক করা কন্টেন্টের পুনঃবিতরণ রোধ করতে, এটিকে আপনার APK ফাইলে অন্তর্ভুক্ত করবেন না। পরিবর্তে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- আপনার কন্টেন্ট সরবরাহ করতে কন্টেন্ট ফিডের মতো একটি রিয়েল-টাইম পরিষেবা ব্যবহার করুন। রিয়েল-টাইম পরিষেবার মাধ্যমে কন্টেন্ট সরবরাহ করলে তা সতেজ রাখাও সম্ভব হয়।
- আপনার কন্টেন্ট ডেলিভার করতে একটি রিমোট সার্ভার ব্যবহার করুন। যখন আপনি একটি রিমোট সার্ভার বা রিয়েল-টাইম সার্ভিস থেকে কন্টেন্ট ডেলিভার করেন, তখন আপনি আনলক করা কন্টেন্টটি ডিভাইসের মেমরিতে বা ডিভাইসের এসডি কার্ডে সংরক্ষণ করতে পারেন। যদি আপনি এসডি কার্ডে কন্টেন্ট সংরক্ষণ করেন, তবে অবশ্যই কন্টেন্টটি এনক্রিপ্ট করুন এবং একটি ডিভাইস-নির্দিষ্ট এনক্রিপশন কী ব্যবহার করুন।
বাতিলকৃত ক্রয় শনাক্ত করুন এবং তার ব্যবস্থা নিন
বাতিলকৃত ক্রয় হলো এমন ক্রয় যা বাতিল, প্রত্যাহার বা ফেরত নেওয়া হয়েছে। যদি কোনো বাতিলকৃত ক্রয় পূর্বে কোনো ব্যবহারকারীকে অ্যাপের ভেতরের আইটেম বা অন্য কোনো কন্টেন্ট দিয়ে থাকে, তাহলে আপনি বাতিলকৃত ক্রয় এপিআই (Voided Purchases API) ব্যবহার করে ক্রয়টি বাতিল করার কারণ এবং এর সাথে যুক্ত যেকোনো কন্টেন্ট যা আপনি ফেরত নিতে পারবেন, তা জানতে পারবেন।
বিভিন্ন কারণে ইন-অ্যাপ আইটেম এবং সাবস্ক্রিপশনের কেনাকাটা বাতিল করা যেতে পারে, যার মধ্যে নিম্নলিখিত কারণগুলো অন্তর্ভুক্ত:
- ব্যবহারকারী, ডেভেলপার বা গুগল (স্বীকৃতি ছাড়া স্বয়ংক্রিয়ভাবে বাতিল হওয়া কেনাকাটা সহ) দ্বারা কোনো কেনাকাটা বাতিল করা হয়। সাবস্ক্রিপশনের ক্ষেত্রে, মনে রাখবেন যে এটি সাবস্ক্রিপশনটি নিজে বাতিল করাকে বোঝায় না, বরং সাবস্ক্রিপশনটির কেনাকাটা বাতিল করাকে বোঝায়।
- ক্রয়কৃত পণ্যের মূল্য ফেরত নেওয়া হয়েছে।
অ্যাপ ডেভেলপার যখন কোনো ব্যবহারকারীর অর্ডার বাতিল বা রিফান্ড করেন, তখন তিনি কনসোলে থাকা 'রিভোক' (revoke) অপশনটি চেক করেন। বাতিল হওয়া কেনাকাটার কারণ এবং ব্যবহারকারীর পূর্ববর্তী আচরণের ডেটা বিবেচনায় নিয়ে আপনি পরবর্তী পদক্ষেপের বিষয়ে সিদ্ধান্ত নিতে পারেন। আমরা নিম্নলিখিত এক বা একাধিক পদ্ধতি প্রয়োগ করার পরামর্শ দিই:
ফেরত গ্রহণ করুন: যখন কোনো কেনাকাটা বাতিল করা হয়, তখন আপনি অব্যবহৃত আইটেমগুলো এমনভাবে ফেরত নিতে পারেন যেন সেগুলো কখনোই কেনা হয়নি। উদাহরণস্বরূপ, যদি ইন-গেম কারেন্সির কোনো কেনাকাটা বাতিল করা হয়, তাহলে আপনি ব্যবহারকারীকে ইতিমধ্যে দেওয়া কারেন্সি ফেরত নিতে পারেন। যদি ব্যবহারকারী ইতিমধ্যে কারেন্সি খরচ করে ফেলে থাকেন, তাহলে কারেন্সি ব্যালেন্স নেগেটিভ করে দেওয়ার কথা বিবেচনা করুন এবং ব্যালেন্স পজিটিভ না হওয়া পর্যন্ত অ্যাপের কার্যকলাপ ও ভবিষ্যতের কেনাকাটা সীমিত করে দিন।
একাধিকবার নিয়ম লঙ্ঘনের ক্ষেত্রে প্রয়োগ: প্রথমবার নিয়ম লঙ্ঘনকারীদের জন্য কম কঠোর ব্যবস্থা নেওয়ার কথা বিবেচনা করুন, যেমন অ্যাপের মধ্যে সতর্কবার্তা প্রদর্শন করা। বারবার নিয়ম লঙ্ঘনকারীদের জন্য আরও কঠোর ব্যবস্থা নেওয়ার কথা বিবেচনা করুন।
সাময়িকভাবে কেনাকাটা নিষ্ক্রিয় করুন: একাধিক স্ট্রাইক বাস্তবায়নের মতোই, যে ব্যবহারকারীদের কেনাকাটা বাতিল করা হয়েছে, তাদের কেনাকাটা নিষ্ক্রিয় করার বিষয়টি বিবেচনা করুন, যতক্ষণ না আপনি কেনাকাটা বাতিলের কারণ আরও পুঙ্খানুপুঙ্খভাবে তদন্ত করতে পারছেন।
আপনার অ্যাপে প্রবেশাধিকার সাময়িকভাবে বা স্থায়ীভাবে বন্ধ করুন: বারবার ক্ষতিকারক কার্যকলাপের মতো গুরুতর ক্ষেত্রে, আপনার অ্যাপে প্রবেশাধিকার সাময়িকভাবে বা স্থায়ীভাবে বন্ধ করার কথা বিবেচনা করুন।
বাতিলকৃত ক্রয় এপিআই- তে ঘন ঘন কল করুন : যখন আপনি এক বা একাধিক বাতিলকৃত ক্রয় শনাক্ত করেন, তখন ব্যবহারকারী সেগুলি ব্যবহার করার আগেই ক্রয়গুলি পুনরুদ্ধার করতে বাতিলকৃত ক্রয় এপিআই-তে আরও ঘন ঘন কল করার কথা বিবেচনা করুন। আপনি বাতিলকৃত ক্রয় ডকুমেন্টেশনে বাতিলকৃত ক্রয় এপিআই কোটা সম্পর্কে আরও তথ্য পেতে পারেন।
জালিয়াতি ঘটার আগেই তা শনাক্ত করতে গুগলকে সাহায্য করুন।
কিছু ধরণের জালিয়াতি এমন অসাধু ব্যবহারকারীদের দ্বারা সংঘটিত হয়, যারা নিজেদের কার্যকলাপ গোপন করার জন্য একাধিক গুগল ও ইন-অ্যাপ অ্যাকাউন্ট তৈরি করে।
Google-কে Google অ্যাকাউন্টগুলোকে ইন-অ্যাপ অ্যাকাউন্টের সাথে সংযুক্ত করতে সাহায্য করার জন্য, BillingFlowParams এর বিল্ডারে setObfuscatedAccountId এবং setObfuscatedProfileId মেথডগুলো ব্যবহার করুন।
গুগল এই ডেটা ব্যবহার করে সন্দেহজনক কার্যকলাপ শনাক্ত করে এবং কিছু ধরণের প্রতারণামূলক লেনদেন সম্পন্ন হওয়ার আগেই ব্লক করে দেয়।
ট্রেডমার্ক এবং কপিরাইট লঙ্ঘনের বিরুদ্ধে ব্যবস্থা গ্রহণ
আপনি যদি কন্টেন্ট সরবরাহ বা পরিচালনা করার জন্য কোনো রিমোট সার্ভার ব্যবহার করেন, তাহলে যখনই কোনো ব্যবহারকারী আনলক করা কন্টেন্ট অ্যাক্সেস করবে, আপনার অ্যাপ যেন সেটির ক্রয়ের অবস্থা যাচাই করে। এর ফলে আপনি প্রয়োজনে ব্যবহার বাতিল করতে এবং পাইরেসি কমাতে পারবেন। যদি আপনি দেখেন যে আপনার কন্টেন্ট গুগল প্লে-তে পুনঃবিতরণ করা হচ্ছে, তাহলে দ্রুত এবং দৃঢ়ভাবে ব্যবস্থা নিন। আরও বিস্তারিত জানতে, কপিরাইট হেল্প সেন্টারের ‘ কপিরাইট সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী’ পৃষ্ঠাটি দেখুন।