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