यह जानकारी ऐसे डेवलपर के लिए लक्षित है जिनके ऐप्लिकेशन में SQL इंजेक्शन का जोखिम मौजूद है.
क्या हो रहा है
आपके एक या उससे ज़्यादा ऐप्लिकेशन में SQL इंजेक्शन होने का जोखिम है जिसे ठीक किया जाना चाहिए. कृपया अपने Play कंसोल पर आई सूचना देखें. आपके Play कंसोल में दिखाई दे रही आखिरी तारीख के बाद, Google Play से ऐसे ऐप्लिकेशन हटाए जा सकते हैं जिनमें सुरक्षा जोखिम में हो सकती है और इन समस्याओं को ठीक नहीं किया गया है.
कार्रवाई करना ज़रूरी है
- अपने Play कंसोल में साइन इन करें और 'अलर्ट' सेक्शन पर जाकर देखें कि किन ऐप्लिकेशन पर असर हुआ है और इन समस्याओं को ठीक करने की आखिरी तारीखें क्या हैं.
- आपके जिन ऐप्लिकेशन पर असर हुआ है, उन्हें अपडेट करें और जोखिम की संभावनाओं को ठीक करें.
- आपके जिन ऐप्लिकेशन पर असर हुआ है उनके अपडेट किए गए वर्शन सबमिट करें.
फिर से सबमिट करने पर, आपके ऐप्लिकेशन की एक बार फिर समीक्षा की जाएगी. इस प्रक्रिया में कई घंटे लग सकते हैं. अगर ऐप्लिकेशन समीक्षा में पास हो जाता है और उसे प्रकाशित कर दिया जाता है, तो फिर और कुछ करने की ज़रूरत नहीं है. अगर ऐप्लिकेशन समीक्षा में फेल हो जाता है, तो ऐप्लिकेशन का नया वर्शन प्रकाशित नहीं किया जाएगा और आपको ईमेल से इसकी सूचना भेजी जाएगी.
कुछ और जानकारी
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” टैग का इस्तेमाल कर सकते हैं. इस समस्या को ठीक करने के लिए आपको जो कदम उठाने हैं उससे जुड़ी जानकारी के लिए, आप हमारी डेवलपर सहायता टीम से संपर्क कर सकते हैं.