किसी SQL इंजेक्शन जोखिम को ठीक करना

यह जानकारी ऐसे डेवलपर के लिए लक्षित है जिनके ऐप्लिकेशन में SQL इंजेक्शन का जोखिम मौजूद है.

क्या हो रहा है

आपके एक या उससे ज़्यादा ऐप्लिकेशन में SQL इंजेक्शन होने का जोखिम है जिसे ठीक किया जाना चाहिए. कृपया अपने Play कंसोल पर आई सूचना देखें. आपके Play कंसोल में दिखाई दे रही आखिरी तारीख के बाद, Google Play से ऐसे ऐप्लिकेशन हटाए जा सकते हैं जिनमें सुरक्षा जोखिम में हो सकती है और इन समस्याओं को ठीक नहीं किया गया है.

कार्रवाई करना ज़रूरी है​

  1. अपने Play कंसोल में साइन इन करें और 'अलर्ट' सेक्शन पर जाकर देखें कि किन ऐप्लिकेशन पर असर हुआ है और इन समस्याओं को ठीक करने की आखिरी तारीखें क्या हैं.
  2. आपके जिन ऐप्लिकेशन पर असर हुआ है, उन्हें अपडेट करें और जोखिम की संभावनाओं को ठीक करें.
  3. आपके जिन ऐप्लिकेशन पर असर हुआ है उनके अपडेट किए गए वर्शन सबमिट करें.

फिर से सबमिट करने पर, आपके ऐप्लिकेशन की एक बार फिर समीक्षा की जाएगी. इस प्रक्रिया में कई घंटे लग सकते हैं. अगर ऐप्लिकेशन समीक्षा में पास हो जाता है और उसे प्रकाशित कर दिया जाता है, तो फिर और कुछ करने की ज़रूरत नहीं है. अगर ऐप्लिकेशन समीक्षा में फेल हो जाता है, तो ऐप्लिकेशन का नया वर्शन प्रकाशित नहीं किया जाएगा और आपको ईमेल से इसकी सूचना भेजी जाएगी.

कुछ और जानकारी

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

अगर किसी ऐसे ContentProvider, जिस पर असर हुआ है, को दूसरे ऐप्लिकेशन में प्रसारित करना ज़रूरी न हो, तो:

  • आप android:exported="false" को सेट करने के लिए अपने मेनिफ़ेस्ट में असर वाले ContentProvider के <provider> टैग में बदलाव कर सकते हैं. इससे दूसरे ऐप्लिकेशन उस ContentProvider को इंटेंट नहीं भेज पाएंगे, जिस पर असर हुआ है.
  • आप दूसरे डेवलपर की ओर से ऐसे ContentProvider को इंटेंट भेजने से रोकने के लिए android:permission विशेषता को android:protectionLevel="signature" के साथ अनुमति पर भी सेट कर सकते हैं, जिस पर असर हुआ है.

अगर किसी ऐसे ContentProvider  को दूसरे ऐप्लिकेशन में प्रसारित करना ज़रूरी हो जिस पर असर हुआ है, तो:

  • आप किसी प्रोजेक्शन मैप से सख्त मोड का इस्तेमाल करके SQLiteDatabase.query में SQL इंजेक्शन को रोक सकते हैं. 'सख्त' मोड नुकसान पहुंचाने वाली चुनने की शर्तों से बचाता है और प्रोजेक्शन मैप नुकसान पहुंचाने वाली प्रोजेक्शन शर्तों से बचाता है. पक्का करने के लिए कि आपकी क्वेरी सुरक्षित हैं, आपको इन दोनों फ़ीचर का इस्तेमाल करना होगा.
  • आप चुनने वाली शर्त का इस्तेमाल करके SQLiteDatabase.update और SQLiteDatabase.delete में SQL इंजेक्शन को रोक सकते हैं जो "?" का इस्तेमाल रिप्लेसमेंट पैरामीटर और चुनने की शर्तों की एक अलग श्रेणी के तौर पर कर सकते हैं. आपकी चुनने की शर्त किसी ऐसे इनपुट से नहीं बनाई जानी चाहिए जिस पर भरोसा नहीं किया जा सकता.

हम मदद के लिए मौजूद हैं

अगर आप जोखिम के बारे में तकनीकी सवाल पूछना चाहते हैं, तो आप Stack Overflow पर पोस्ट कर सकते हैं और “android-security” टैग का इस्तेमाल कर सकते हैं. इस समस्या को ठीक करने के लिए आपको जो कदम उठाने हैं उससे जुड़ी जानकारी के लिए, आप हमारी डेवलपर सहायता टीम से संपर्क कर सकते हैं.

false
मुख्य मेन्यू
15733668560175989477
true
खोज मदद केंद्र
true
true
true
true
true
5016068
false
false