android:एक्सपोर्ट किया गया

OWASP कैटगरी: MASVS-PLATFORM: Platform Interaction

खास जानकारी

android:exported एट्रिब्यूट यह तय करता है कि किसी कॉम्पोनेंट (ऐक्टिविटी, सेवा, ब्रॉडकास्ट रिसीवर वगैरह) को दूसरे ऐप्लिकेशन के कॉम्पोनेंट लॉन्च कर सकते हैं या नहीं:

  • अगर true है, तो कोई भी ऐप्लिकेशन गतिविधि को ऐक्सेस कर सकता है और उसे क्लास के सही नाम से लॉन्च कर सकता है.
  • अगर false है, तो सिर्फ़ एक ही ऐप्लिकेशन के कॉम्पोनेंट, एक ही उपयोगकर्ता आईडी वाले ऐप्लिकेशन या खास सिस्टम कॉम्पोनेंट, गतिविधि लॉन्च कर सकते हैं.

इस एट्रिब्यूट की डिफ़ॉल्ट वैल्यू के पीछे का लॉजिक समय के साथ बदल गया है. साथ ही, यह कॉम्पोनेंट टाइप और Android वर्शन के हिसाब से अलग-अलग था. उदाहरण के लिए, एपीआई लेवल 16 (Android 4.1.1) या इससे पहले के वर्शन पर, <provider> एलिमेंट की वैल्यू डिफ़ॉल्ट रूप से true पर सेट होती है. इस एट्रिब्यूट को साफ़ तौर पर सेट न करने से, कुछ डिवाइसों के बीच डिफ़ॉल्ट वैल्यू अलग-अलग होने का खतरा होता है.

असर

अलग-अलग डिफ़ॉल्ट वैल्यू की वजह से, आपके ऐप्लिकेशन के इंटरनल कॉम्पोनेंट गलती से सार्वजनिक हो सकते हैं. नियमों के उल्लंघन के कुछ उदाहरण यहां दिए गए हैं:

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

जोखिम कम करने के तरीके

android:exported एट्रिब्यूट को हमेशा साफ़ तौर पर सेट करें. इससे, कॉम्पोनेंट की दृश्यता के बारे में आपके इरादे का साफ़ तौर पर पता चलेगा.