2013-12-10 4 views
9

सहयोगी डेवलपर्स!सिंक एडाप्टर सेवा निर्यात की गई लेकिन असुरक्षित

मेरे पास मेरे ऐप और एक सिंक सेवा में एक सिंक एडाप्टर है। Google example code के अनुसार, मैंने सिंक सेवा समेत सबकुछ घोषित कर दिया है।

<service 
    android:name="com.myapp.SyncService" 
    android:exported="true" 
    android:process=":sync"> 

    <intent-filter> 
     <action 
      android:name="android.content.SyncAdapter"/> 
    </intent-filter> 

    <meta-data 
     android:name="android.content.SyncAdapter" 
     android:resource="@xml/syncadapter" /> 

</service> 

हालांकि यह (यह तक पहुँचने के लिए एंड्रॉयड प्रणाली में सक्षम है) सेवा पर true को android:exported विशेषता निर्धारित करने में समझ में आता है, मैं थोड़ा कि यह कैसे टाई पर हैरान हूँ: अधिक से अधिक चित्र कुछ इस तरह दिखता पहुंच अधिकारों के मामले में नीचे। मैं किसी और को नहीं चाहता लेकिन मेरा ऐप और एंड्रॉइड सिस्टम सेवा तक पहुंच सके।

हो सकता है कि एक सा भोलेपन से मैं अपने ही अनुमति इस के लिए बनाया है:

<permission 
    android:name="com.myapp.permission.SYNC_ADAPTER" 
    android:protectionLevel="signatureOrSystem" /> 

लेकिन protectionLevel पर थोड़ा पढ़ने मुझे और भी अधिक आश्चर्य बनाता है। Google says:

कृपया इस विकल्प का उपयोग करने से बचें [...] "signatureOrSystem" अनुमति जहां कई विक्रेताओं एक सिस्टम छवि में बनाया गया अनुप्रयोगों और क्योंकि वे निर्माण किया जा रहा स्पष्ट रूप से विशिष्ट सुविधाओं को साझा करने की जरूरत है कुछ विशेष परिस्थितियों के लिए प्रयोग किया जाता है साथ में।

वर्णित परिदृश्य मेरे उपयोग के मामले से बहुत दूर है। प्रश्न तब बनी हुई है:

मैं अपनी सिंक सेवा कैसे सुरक्षित करूं ताकि एंड्रॉइड सिस्टम, लेकिन कोई तृतीय पक्ष ऐप्स इसे एक्सेस न कर सके?

कोई स्पष्टीकरण की सराहना की जाएगी!

+2

क्या आपने अभी "हस्ताक्षर" सुरक्षा का उपयोग करने की कोशिश की है? मुझे संदेह है कि सिस्टम अभी भी आपके सिंक एडाप्टर तक पहुंच पाएगा। –

+1

हाँ, मेरे पास है। और जैसा कि आप उल्लेख करते हैं, एंड्रॉइड सिस्टम * लगता है * पहुंच है। लेकिन क्या यह एक दस्तावेजी व्यवहार है? क्या मैं अपने डिवाइस पर भाग्यशाली हूं? क्या मेरे ऐप के सभी उपयोगकर्ता अपने डिवाइस पर भाग्यशाली होंगे? – dbm

उत्तर

0

ऐसा लगता है कि एक SyncAdapter अनुमति नहीं है। मुझे लगता है कि हम त्रुटि को सुरक्षित रूप से अनदेखा कर सकते हैं। यहां दर्ज की गई बग देखें: https://code.google.com/p/android/issues/detail?id=37280

+0

हस्ताक्षर अनुमति जोड़ने की अनुशंसा की जाती है @ beworker की टिप्पणी देखें – Entreco

0

मुझे एक ही समस्या है। इस उदाहरण स्रोत कोड को यहां गाइड https://android.googlesource.com/platform/packages/apps/Exchange/+/ics-mr0/AndroidManifest.xml के रूप में देखकर ऐसा लगता है कि सिंक एडेप्टर स्पष्ट रूप से किसी भी अनुमति के बिना = "सत्य" निर्यात कर चुके हैं।

+1

हां, मैंने यह भी देखा है कि ऑनलाइन उदाहरणों में से कोई भी सुरक्षा (अनुमतियों) पहलू पर कोई विस्तृत चर्चा नहीं कर रहा है। जब मैं इस बिंदु पर आ जाता हूं कि मैंने अपना कोड टेस्ट बेंच (जेनकींस) पर रखा है, तो मुझे स्पष्ट लिंट चेतावनियां भी मिलती हैं, मूल रूप से मुझे बताती है कि मुझे पहले से क्या पता है; कि मेरे पास यहां एक विस्तृत खुला दरवाजा है :-) – dbm

3

beworker काफी सही है। मैंने हस्ताक्षर अनुमति का उपयोग किया है और सिस्टम बिना किसी परेशानी के सिंक करने में सक्षम है।

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