सूचना

You can now request help from the Help page in your Play Console account.  If you don't have access to Play Console, ask your account admin for an invite.

छेड़छाड़ से सुरक्षा की सुविधा को ज़रूरत के मुताबिक बनाना

ध्यान दें: यह सुविधा, सिर्फ़ Google Play के चुनिंदा पार्टनरों के लिए उपलब्ध है.

इस लेख में, अपने ऐप्लिकेशन और गेम के लिए Google Play की छेड़छाड़ से सुरक्षा की सुविधा को ज़रूरत के मुताबिक बनाने का तरीका बताया गया है. इस पेज पर बताई गई, अपनी ज़रूरत के हिसाब से बनाने की सुविधाओं का इस्तेमाल करने के लिए, यह ज़रूरी है कि Google Play Console में ऑटोमैटिक प्रोटेक्शन के साथ-साथ, छेड़छाड़ से सुरक्षा की सुविधा चालू हो.

ज़रूरत के मुताबिक सेट अप की गई, छेड़छाड़ से सुरक्षा की सुविधा के बारे में जानकारी

ज़रूरत के मुताबिक सेट अप की गई, छेड़छाड़ से सुरक्षा की सुविधा से अपने ऐप्लिकेशन में Java और Kotlin के लिए दिए गए उन तरीकों की पहचान की जा सकती है जिनके लिए बेहतर सुरक्षा की ज़रूरत पड़ती है. जब Google Play पर आपके ऐप्लिकेशन की रिलीज़ अपलोड की जाती है, तब Google Play इन तरीकों के लिए बेहतर सुरक्षा को प्राथमिकता देता है.

बेहतर सुरक्षा के लिए इन तरीकों की पहचान करके, अपने ऐप्लिकेशन को छेड़छाड़ से बचाने के लिए सुरक्षा को और बेहतर बनाया जा सकता है. बाइनरी से क्लाइंट सीक्रेट (जैसे, संवेदनशील कुंजियां या ऐसे यूआरएल जो ऐप्लिकेशन में होने चाहिए) चोरी होने से बचाने के लिए, तरीके को सुरक्षित रखने वाली सुविधा का भी इस्तेमाल किया जा सकता है.

ज़रूरत के मुताबिक सेट अप की गई, छेड़छाड़ से सुरक्षा की सुविधा लागू करना

अपने ऐप्लिकेशन के कोड बेस में ज़रूरत के मुताबिक बनाई गई, छेड़छाड़ से सुरक्षा की सुविधा लागू करने के लिए यह तरीका अपनाएं.

पहला चरण: अपने कोड बेस में ऑटोमैटिक प्रोटेक्शन के लिए इंटरफ़ेस जोड़ें

सबसे पहले, अपने ऐप्लिकेशन या गेम में सुरक्षा के लिए इंटरफ़ेस जोड़ें.

Kotlin:

package com.google.android.play.protections.annotations

/**
* इससे पता चलता है कि यह तरीका, बेहतर सुरक्षा के लिए सही है.
*
* <p>जब Google Play आपके बंडल की सुरक्षा करता है, तब यह एनोटेशन आपके
* बंडल के dex कोड से अपने-आप हटा देगा. इसका इस्तेमाल सिर्फ़
* लेवल एनोटेशन के तौर पर करें. किसी अन्य तरह से इस्तेमाल करने पर (जैसे, रनटाइम के दौरान Reflection API का इस्तेमाल करके क्लास
* को ऐक्सेस करना), यह सुविधा काम नहीं करती.
*/
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
public annotation class PlayAutomaticIntegrityProtection() {}

Java:

package com.google.android.play.protections.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* इससे पता चलता है कि यह तरीका, बेहतर सुरक्षा के लिए सही है.
*
* <p>जब Google Play आपके बंडल की सुरक्षा करता है, तब यह एनोटेशन आपके
* बंडल के dex कोड से अपने-आप हटा देगा. इसका इस्तेमाल सिर्फ़
* कोड लेवल एनोटेशन के तौर पर करें. किसी अन्य तरह से इस्तेमाल करने पर (जैसे, रनटाइम के दौरान Reflection API का इस्तेमाल करके क्लास
* को ऐक्सेस करना), यह सुविधा काम नहीं करती.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PlayAutomaticIntegrityProtection {}

अहम जानकारी: अगर आपको अपना ऐप्लिकेशन ऑप्टिमाइज़ करने के लिए ProGuard या R8 जैसे अन्य टूल इस्तेमाल करने हैं, तो आपको उन्हें इस तरह कॉन्फ़िगर करना होगा कि ऑप्टिमाइज़ेशन की प्रोसेस के दौरान एनोटेशन हट न जाए. ProGuard के लिए यह कॉन्फ़िगरेशन जोड़ें:

# एनोटेशन क्लास और उसके प्रोग्रामिंग एलिमेंट (Java और Kotlin) को रहने दें.
-keep class com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection* { *; }

# ProGuard डिफ़ॉल्ट रूप से, सभी एनोटेशन एट्रिब्यूट को विकल्प के तौर पर मानता है और
# उन्हें कोड को अस्पष्ट बताने वाले चरण में हटा देता है. इस कॉन्फ़िगरेशन कोड से यह पक्का किया जाएगा कि एनोटेशन एट्रिब्यूट सेव रखे जाएं.
-keepattributes RuntimeVisibleAnnotations, AnnotationDefault

# उन सभी तरीकों का इस्तेमाल करना जारी रखें जिनमें एनोटेशन शामिल है, लेकिन उन्हें अस्पष्ट बनाने की अनुमति दें.
-keepclassmembers,allowobfuscation class * {
    @com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection *;
}

दूसरा चरण: कस्टम प्रोटेक्शन के लिए तरीकों को एनोटेट करें

अपने ऐप्लिकेशन में इंटरफ़ेस को शामिल करने के बाद, खास तरीकों को एनोटेट करके सुरक्षित किया जा सकता है:
Kotlin:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection

@PlayAutomaticIntegrityProtection()
fun myMethod() {
  // Method body...
}

 

Java

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection;

@PlayAutomaticIntegrityProtection()
public void myMethod() {
  // Method body...
}

तीसरा चरण: (ज़रूरी नहीं है) क्लाइंट-साइड सीक्रेट सुरक्षित रखें

कस्टम प्रोटेक्शन वाला तरीका, एनोटेट किए गए तरीके के मुख्य हिस्से में मौजूद कोड को सीधे तौर पर अस्पष्ट कर देता है. इसका इस्तेमाल, संवेदनशील एपीआई पासकोड को सुरक्षित रखने के लिए किया जा सकता है.

ध्यान दें: एपीआई पासकोड वाली स्ट्रिंग को सुरक्षित किए गए तरीके के मुख्य हिस्से में इनलाइन किया जाना चाहिए. इसे किसी फ़ील्ड में एक्सट्रैक्ट नहीं करना चाहिए, क्योंकि तरीके के सिर्फ़ मुख्य हिस्से को अस्पष्ट किया जाएगा.

Kotlin:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection

@PlayAutomaticIntegrityProtection()
fun callApi() {
  api.connect("YOUR_API_KEY")
}

 

Java:

import com.google.android.play.protections.annotations.PlayAutomaticIntegrityProtection;

@PlayAutomaticIntegrityProtection()
public static void callApi() {
  api.connect("YOUR_API_KEY");
}

चौथा चरण: (ज़रूरी नहीं है) सुरक्षा की वजह से परफ़ॉर्मेंस पर पड़ने वाले असर को मैनेज करें

डिफ़ॉल्ट रूप से, किसी सुरक्षित किए गए तरीके को लागू करने में कुछ मिलीसेकंड ज़्यादा लगते हैं. इसलिए, इसे परफ़ॉर्मेंस के हिसाब से संवेदनशील स्थितियों में या मुख्य थ्रेड पर लागू नहीं किया जाना चाहिए.

अगर आपको किसी ऐसे तरीके को सुरक्षित रखना है जिसमें तेज़ी से काम करना ज़रूरी है, तो कम सुरक्षा वाला एक मोड उपलब्ध है. तेज़ी से ऐक्सेस करने के लिए, एनोटेशन एट्रिब्यूट का इस्तेमाल किया जा सकता है. यह एट्रिब्यूट, स्टार्टअप के समय लोड होता है. हालांकि, इससे मिलने वाली सुरक्षा ज़्यादा मज़बूत नहीं होती.

Kotlin:

@PlayAutomaticIntegrityProtection(loadAtStartup = true)
fun callApi() {
  api.connect("YOUR_API_KEY")
}

 

Java:

@PlayAutomaticIntegrityProtection(loadAtStartup = true)
public static void callApi() {
  api.connect("YOUR_API_KEY");
}

इसका इस्तेमाल करने के लिए, पहले चरण में दिए गए एनोटेशन की असल परिभाषा के मुख्य हिस्से में इंटरफ़ेस एट्रिब्यूट जोड़ें:

// Kotlin एनोटेशन की परिभाषा में बदलाव
public annotation class PlayAutomaticIntegrityProtection(
  /**
  * अगर यह वैल्यू 'सही है' पर सेट है, तो एनोटेट किया गया तरीका स्टार्टअप के समय लोड हो जाएगा. अगर यह वैल्यू 'गलत है' पर सेट है, तो इसे
  * ज़रूरत पड़ने पर लोड किया जाएगा.
  *
  * <p>ज़रूरत पड़ने पर लोड करने के लिए, इस तरीके को लागू करने पर परफ़ॉर्मेंस
  * पर असर पड़ेगा. स्टार्टअप के समय लोड करने के लिए, यह तरीका
  * ऐप्लिकेशन के चालू रहने तक मेमोरी में डिकोड की गई स्थिति में रहेगा.
  */
  val loadAtStartup: Boolean = false
) {}

पांचवां चरण: अपने ऐप्लिकेशन की जांच करें

Google Play Console की मदद से अपने ऐप्लिकेशन या गेम को सुरक्षित करने के बाद, उसकी अच्छी तरह से जांच करें. साथ ही, यह पुष्टि करें कि बेहतर सुरक्षा के लिए एनोटेट किए गए तरीके को आपकी टेस्टिंग के दौरान लागू किया गया हो. इससे ऐप्लिकेशन की परफ़ॉर्मेंस पर पड़ने वाले किसी भी संभावित असर का सटीक आकलन किया जा सकेगा.

तरीके चुनने के बारे में सबसे असरदार बातें

तरीकों को सोच-समझकर चुनने से, आपका ऐप्लिकेशन ज़्यादा सुरक्षित रहता है. अगर हर नई रिलीज़ में, सुरक्षा के लिए नया तरीका इस्तेमाल किया जाता है, तो ऐप्लिकेशन या गेम के उस वर्शन को हैक करना ज़्यादा मुश्किल हो जाएगा.

अपने ऐप्लिकेशन की परफ़ॉर्मेंस पर पड़ने वाले असर को कम करने के लिए, बार-बार इस्तेमाल होने वाले तरीके के बजाय खास स्थितियों में इस्तेमाल होने वाले तरीके चुनें. ज़्यादा से ज़्यादा सुरक्षा के लिए, ऐसे तरीके चुनें जो:

  • ऐप्लिकेशन के लिए बहुत ज़रूरी हों (अगर उन्हें हटाया जाता है, तो ऐप्लिकेशन काम नहीं कर पाएगा).
  • मुख्य/यूज़र इंटरफ़ेस (यूआई) थ्रेड में लागू नहीं किए गए हों.
  • ऐप्लिकेशन के चालू रहने के दौरान, एक से ज़्यादा बार लागू किए जाते हों. हालांकि, उन्हें बार-बार लागू नहीं करना चाहिए.
  • मुश्किल नहीं हों (ऐसे तरीके जिनमें मुश्किल कोड या डेटा शामिल हो).
  • स्टार्टअप के दौरान लागू नहीं किए जाते हों. ऐसा तब नहीं करना चाहिए, जब मुमकिन हो.
  • ऐप्लिकेशन की रिलीज़ में पहली बार इस्तेमाल किए गए हों या उनमें काफ़ी बदलाव किया गया हो.
  • ऐब्स्ट्रैक्ट न हों, इंटरफ़ेस वाले न हों या कंस्ट्रक्टर न हों.
  • Reflection API का इस्तेमाल और किसी नेटिव लाइब्रेरी को सीधे तौर पर लोड न करते हों.

ज़रूरत के मुताबिक सेट अप की गई, छेड़छाड़ से सुरक्षा की सुविधा हटाना

अगर आपको किसी खास तरीके को सुरक्षित नहीं रखना है, तो @PlayAutomaticIntegrityProtection() एनोटेशन को आसानी से हटाया जा सकता है.

अहम जानकारी: हम यह सुझाव नहीं देते कि सुरक्षित किए गए आर्टफ़ैक्ट को ओपन ट्रैक पर पब्लिश करने के बाद, सुरक्षा की सुविधा बंद कर दी जाए. ऐसा करने से, हैकर के लिए पुराने और नए कोड के बीच फ़र्क़ समझकर आपके ऐप्लिकेशन को हैक करना आसान हो जाता है. ज़रूरत के हिसाब से बनाई गई, तरीके को सुरक्षित रखने की सुविधा को चालू और बंद करके, ऐप्लिकेशन के इंटरनल टेस्ट ट्रैक में ही हमेशा अलग-अलग आर्टफ़ैक्ट की जांच करें.

 

इस पेज पर, एआई टेक्नोलॉजी का इस्तेमाल करके अनुवाद किया गया कॉन्टेंट मौजूद हो सकता है. एआई से किए गए अनुवादों में गलतियां हो सकती हैं.

क्या यह उपयोगी था?

हम उसे किस तरह बेहतर बना सकते हैं?
true
खोजें
खोज हटाएं
खोज बंद करें
Google ऐप
मुख्य मेन्यू
16633526440040383056
true
खोज मदद केंद्र
false
true
true
true
true
true
92637
false
false
false
false
false