2011-05-25 21 views
13

हम कैसे सुनिश्चित कर सकते हैं कि कुछ एप्लिकेशन सामग्री प्रदाता में संग्रहीत मेरे डेटा तक पहुंचने में सक्षम नहीं हैं, जहां कुछ अन्य एप्लिकेशन उस तक पहुंच सकते हैं? असल में मुझे सामग्री प्रदाता में संग्रहीत डेटा तक पहुंचने के लिए अपनी रुचि के कुछ एप्लिकेशन की अनुमति देने की आवश्यकता है, लेकिन मैं नहीं चाहता कि सभी एप्लिकेशन उस डेटा तक पहुंच सकें। इसे कैसे प्राप्त किया जा सकता है?अनुप्रयोगों में सामग्री प्रदाता डेटा को प्रतिबंधित करने के लिए

धन्यवाद।

उत्तर

16

सामग्री प्रदाता को आपके द्वारा परिभाषित अनुमति के साथ सुरक्षित करने का सबसे आसान तरीका है। इसे एक हस्ताक्षर की अनुमति दें ताकि आपके प्रमाणपत्र के साथ हस्ताक्षरित ऐप्स ही इसे प्राप्त कर सकें।

देखें:

http://developer.android.com/guide/topics/security/security.html

http://developer.android.com/reference/android/R.styleable.html#AndroidManifestProvider

http://developer.android.com/guide/topics/manifest/provider-element.html

तो प्रमाण पत्र के आधार पर ऐसा करने के लिए पर्याप्त नहीं है, तो आप अपने आप को अनुमति की जाँच करता है लिखने के लिए की आवश्यकता होगी। यह आपके अनुप्रयोगों में आने वाली कॉल के लिए Binder.getCallingUid() को कॉल करके और यह तय करने के लिए किया जाता है कि दिए गए यूआईडी को आपके प्रदाता तक पहुंचने की अनुमति है या नहीं। असल में एक अलग नीति को लागू करने के लिए जो वास्तव में सुरक्षित है, के लिए बहुत सावधान विचार और डिज़ाइन की आवश्यकता होती है।

4

AndroidManifest.xml में, अपने ContentProvider के गुणों के साथ स्क्रीन पर, आप दो क्षेत्रों है:

पढ़ने की अनुमति WritePermission

तो, आप सुरक्षित तार परिभाषित कर सकते हैं (यह भी यह रास्ता हो सकता है कुछ फ़ाइल में) जो आपके ContentProvider पर acces के लिए अनुमतियां हैं।

आपके सामग्री प्रदाता तक पहुंचने के लिए आवेदन करने वाले अनुप्रयोगों को उनके उपयोग पैरामिशन तत्वों में जोड़ा जाना चाहिए।

+0

क्या होगा अगर वह पढ़ने की अनुमति स्ट्रिंग लीक हो जाए और कुछ तृतीय पक्ष ऐप ने इसे भी उनके प्रकट में जोड़ा। ऐसे मामले कैसे प्रदाता से बच सकते हैं – Javanator

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