Android 組件安全,android組件

來源:互聯網
上載者:User

Android 組件安全,android組件

     1、Activity、Service、BroadcastReceiver、ContentProvider是Android的四大組件,他們的安全性是非常重要的。四大組件的安全性漏洞主要集中在是否可以被外部調用,外部調用是否存在風險。

     四大組件是否可以被外部調用,決定因素是在AndroidManifest.xml裡面定義的四大組件的標籤export的布爾值。如下:

<activity              android:name=".PartActivity"              android:theme="@android:style/Theme.Dialog"             android:export="true">  </activity>  

    export為true,表示PartActivity可以被外部調用。export如果為false,表示PartActivity不可以被外部調用。


    我們注意到我們在定義四大組件時,經常是不寫export這個標籤的,那麼系統預設的export是什麼呢?

    (1)、如果四大組件包含intent-filter,那麼Android系統認為這個組件可以被外部通過隱式調用,所以預設export為true。

<activity              android:name=".MainActivity"              android:label="MainActivity" >              <intent-filter>                  <action android:name="android.intent.action.MAIN" />                    <category android:name="android.intent.category.LAUNCHER" />              </intent-filter>  </activity>

    (2)、如果四大組件不包含intent-filter,那麼Android系統認為這個組件值只可以被內部通過顯式調用,所以預設export為false。

<activity              android:name=".PartActivity"              android:theme="@android:style/Theme.Dialog" >  </activity>

     2、為了增加四大組件的安全,可以定義訪問某個組件需要某個許可權。

<activity  android:name=".PartActivity"  android:theme="@android:style/Theme.Dialog" >  android:permission="com.example.test.permission"</activity><permission android:name="com.example.test.permission"  android:protectionLevel="dangerous"  android:label="test"  android:description="test_permission" />  
    如果需要使用必須在AndroidManifest.xml,通過申請許可權可以,另外也要注意protectionLevel,如果是Signature,那麼只有和這個應用使用相同私密金鑰簽名的應用才可以申請這個許可權。

<uses-permission android:name="com.example.test.permission" />


    

     3、Intent啟動不同組件的方法如下:         

組件名稱

方法名稱

Activity                                                                         

startActivity()

startActivityForResult()                                                                                                                                               

Service

startService()

bindService()

Broadcasts

sendBroadcast()

sendOrderedBroadcast()

sendStickyBroadcast()


     sendBroadcast,有一個方法,可以不用在AndroidManifest.xml裡面聲明,uses-permission;直接發送時附帶許可權,sendBroadcast(intent, receiverPermission)。動態註冊的receiver可以在代碼中指定需要訪問它所需要的許可權。


    4、ContentProvider安全

<provider    android:name=".StudentContentProvider"    android:authorities="com.example.loadermanagerdemo.StudentContentProvider" android:readPermission="com.example.testapps.readPermission"android:writePermission="com.example.testapps.writePermission"></provider>
    需要讀contentProvider時,要申請readPermission,需要寫contentProvider時,需申請writePermission。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.