2016-02-17 6 views
8

जब आप अपने एंड्रॉइड प्रोजेक्ट में तीसरे पक्ष के एपीआई (पैकेट निर्भरता इंजेक्शन, जेनरेट लाइब्रेरीज़, सोर्स कोड इत्यादि) आयात करते हैं, तो आप मानते हैं कि वे विज्ञापित के रूप में व्यवहार करेंगे। अधिकांश बार कोड ओपन सोर्स नहीं होता है, यह obfuscated या बस संकलित है।एंड्रॉइड सिस्टम संसाधनों के लिए तीसरे पक्ष के एपीआई का नियंत्रण उपयोग?

क्या इस एपीआई के उपयोग को नेटवर्क, संपर्क, वीडियो और ऑडियो, स्थान जैसे महत्वपूर्ण सिस्टम संसाधनों तक पहुंचने का कोई तरीका है?

सर्वोत्तम संसाधन सिस्टम संसाधनों के लिए proxy प्रदान करना होगा। यह निम्नलिखित लाभ होगा:

  • टेस्ट प्रॉक्सी में नकली डेटा उपलब्ध कराने के द्वारा किया जा सकता है
  • आपका आवेदन सभी अनुमतियों एपीआई की आवश्यकता होती है अगर वे आवश्यक नहीं हैं प्रदान करने के लिए नहीं होगा और प्रॉक्सी की अनुमति होगी एपीआई दी
  • फ़िल्टर संभव डेटा उपयोगकर्ता के बारे में स्थानीय रूप से एकत्र किया गया और एक API घर रेपो के लिए भेजा अनुमति, विज्ञापन या दुर्भावनापूर्ण इरादे के लिए इस्तेमाल की नकल द्वारा अनुमति की वजह से नहीं तोड़ करने के लिए

मैं लगाने के लिए कैसे एक ऐसी नाकाम रहे हैं soluti पर लागू किया जा सकता है क्योंकि उपयोगकर्ता की परिभाषित गतिविधियां और सेवाएं तृतीय पक्ष एपीआई की सेवाओं को नियंत्रित नहीं कर सकती हैं या किसी भी एंड्रॉइड सार्वजनिक इंटरफ़ेस को सीधे कॉल करने के लिए भी रोक सकती हैं।

समाधान को रूट पहुंच की आवश्यकता नहीं है, क्योंकि आप अपने नियंत्रण की सीमाओं के बाहर यह नियंत्रण नहीं रखना चाहते हैं। (log data of content providers, network requests - कि मुझे इस समस्या से, जबकि इसके लिए एक जवाब शोध में सोचने के लिए मिल गया)

इस सवाल की सामग्री के कई सवाल हैं जो इस व्यापक प्रश्न की विशिष्टताओं को संबोधित करने से जुड़ा हुआ है

नोट: संक्षिप्त उत्तर नहीं है, लेकिन कोई भी रचनात्मक पर्याप्त हो सकता है (शायद देशी स्तर के हैक के लिए जा रहा है इस समस्या को हल कर सकता है - आईडीके)

+1

आप उस कोड को एक अलग sandboxed प्रक्रिया में चला सकते हैं, जिसमें कोई अनुमति नहीं है। हालांकि, चूंकि आमतौर पर उस कोड को कुछ अनुमतियां होने की उम्मीद होगी, वह कोड शायद क्रैश हो जाएगा। यदि लाइब्रेरी निर्भरता इंजेक्शन का समर्थन करती है, शायद परीक्षण के लिए मोक्स की तरफ नजर रखने के लिए, आप एक "नकली" इंजेक्ट करने के साधनों को अपनाने में सक्षम हो सकते हैं जो सुरक्षित एपीआई में प्रबंधित पहुंच के लिए सैंडबॉक्स प्रक्रिया से आईपीसी का उपयोग करता है। हालांकि, कुछ पुस्तकालय इसका समर्थन करेंगे। – CommonsWare

+0

@ कॉमन्सवेयर जो इसके लिए परीक्षण करने का एक अच्छा तरीका है, हालांकि कुछ मालवेयर तब परीक्षण कर सकते हैं जब वे परीक्षण में हैं यदि दुर्भावनापूर्ण इरादा आपके बाद है। हालांकि, अगर आप एक नया ढांचा बनाने की योजना नहीं बनाते हैं और अभी भी एपीआई का उपयोग करते हैं, तो सवाल अभी भी खड़ा है –

उत्तर

1

अपने वांछित एंड्रॉइड संसाधन के लिए प्रॉक्सी क्लास बनाएं, जिसे आप com.myproxies नामक पैकेज में सुरक्षित रखना चाहते हैं (उदाहरण के लिए MediaRecorder, सेंसर मैनेजर, कैमरा, java.net.HTTPURL कनेक्शन) प्रॉक्सी में आपको इम्प्लायर करने की आवश्यकता है जिस कक्षा में आप मजाक कर रहे हैं, उसके सभी सार्वजनिक तरीकों को तैयार करें और आपको पहुंच (उचित विधि के लिए आगे) की अनुमति देने या अस्वीकार करने के लिए तर्क लागू करने की आवश्यकता है। caller of the method जांचना एक सहायक कदम होगा।

  • आप स्रोत कोड को आयात करने की योजना है, refactor कोड आपके प्रॉक्सी के लिए पैकेज को बदलने के लिए (ProGuard इस के साथ मदद कर सकते हैं)।

  • यदि आप लाइब्रेरी का उपयोग कर रहे हैं, तो Jar Jar Links प्राप्त करें, एक उपयोगिता जो जावा पुस्तकालयों को दोबारा लोड करना और उन्हें अपने वितरण में एम्बेड करना आसान बनाता है, और पैकेज के नामों को आंतरिक रूप से अपने पैकेज में एक वर्ग में बदल देता है जो सेवा करेगा एक प्रॉक्सी के रूप में।

  • आप Maven या Gradle पैकेज निर्भरता इंजेक्शन का उपयोग कर रहे हैं, तो आप भी जार जार लिंक आयात और (बहुत यकीन है कि यह किया जा सकता है नहीं) संकलन समय पर पैकेज रिफैक्टरिंग प्रदर्शन करने के लिए

दुर्भाग्य से कोशिश कर सकते हैं एपीआई तोड़ना बहुत आसान है, जैसा कि मैंने स्वयं अनुभव किया है, और इसमें बहुत सारे मैन्युअल श्रम शामिल हैं।

संबंधित मुद्दे