4.212 से अधिक पुराने वेबव्यू में भेद्यता है जब आप इसके लिए जावास्क्रिप्ट सक्षम करें।
जावास्क्रिप्ट को सक्षम करने की
उपयोग:
एक बार JavaScript सक्षम हो, तो आप अपने आवेदन कोड और अपने जावा स्क्रिप्ट कोड के बीच इंटरफेस बना सकते हैं।
addJavascriptInterface (वस्तु वस्तु, स्ट्रिंग नाम) विधि:
addJavascriptInterface विधि WebView में एक आपूर्ति जावा वस्तु injects।
वस्तु को आपूर्ति किए गए नाम का उपयोग करके मुख्य फ्रेम के जावास्क्रिप्ट संदर्भ में इंजेक्शन दिया गया है और यह जावा ऑब्जेक्ट के जावास्क्रिप्ट से विधियों तक पहुंचने की अनुमति देता है।
एंड्रॉइड 4.1 या पुराने चलाने वाले अनुप्रयोगों के लिए, सभी सार्वजनिक विधियों (विरासत सहित) को एक्सेस किया जा सकता है, इसलिए जब उपयोगकर्ता के इंस्टॉल किए गए एप्लिकेशन addJavascriptInterface विधि के साथ एक बाहरी वेबपृष्ठ लोड करता है तो यह जावा ऑब्जेक्ट को कॉल करने के लिए वेबव्यू और जावास्क्रिप्ट का उपयोग कर सकता है (किसी अन्य अनियंत्रित जावा क्लास को आमंत्रित करने के लिए 'जावास्क्रिप्ट पाइपलाइन' और प्रतिबिंब के उपयोग की तरह) जो हमलावरों को एंड्रॉइड की जावा विधियों को कॉल करने की अनुमति देता है।
ठीक:
अनुप्रयोगों के लिए चल रहा है Android 4.2 सभी सार्वजनिक तरीकों कि JavascriptInterface से एनोटेट जावास्क्रिप्ट से पहुँचा जा सकता।
तो यदि आप एसडीके संस्करण 17 या उच्चतर के लिए कोई एप्लिकेशन विकसित करते हैं, तो आपको अपनी जावास्क्रिप्ट में उपलब्ध किसी भी विधि में @JavascriptInterface एनोटेशन जोड़ना होगा।
यदि आप एनोटेशन प्रदान नहीं करते हैं, तो एंड्रॉइड 4.2 या उसके बाद वाले संस्करण पर चलने पर विधि आपके वेब पेज द्वारा पहुंच योग्य नहीं है।
Reference
स्रोत
2013-09-30 08:47:59
एफवाईआई: नीचे दिया गया लिंक समस्या की गहराई पर चर्चा करता है। http://arstechnica.com/security/2013/09/attackers-can-slip-malicious-code-into-many-android-apps-via-open-wi-fi/। –
मुझे लगता है कि आपका मतलब है, जब आप * जावास्क्रिप्ट इंटरफेस * जोड़ते हैं, तो यह प्रतिबिंब के माध्यम से मूल जावा सामग्री तक पहुंचने की क्षमता जोड़ता है। – NoBugs
हाँ आप सही हैं। –