我的應用程序使用android:protectionLevel =「signature」定義權限。如何防止其他應用程序定義相同的權限名稱
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />
我的意圖是讓應用程序模塊只能通過我已簽名的應用程序啓動。這些應用程序模塊在其活動中具有android:權限。 這工作正常。但是... 第三方應用程序可以使用相同的權限名稱。如果我的應用程序第一次安裝改變了保護級別設置爲正常,像這樣
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />
,我就可以防止其他人的應用程序覆蓋的權限。但是,如果有人卸載我的應用程序,然後安裝他的應用程序,則重新定義權限。
是否有可能阻止其他應用程序中使用相同的權限名稱,例如,給予許可,如應用程序包一個唯一的ID?
雖然清單是加密的,當它試圖啓動需要這個權限(將拋出一個異常具有所需的權限名)活動任何人都可以讀取日誌貓權限名稱。
好問題,我的猜測是你沒有辦法限制其他應用程序這樣做。 – FoamyGuy 2012-07-12 18:42:56
這是一個安全問題。我無法保證我簽名的應用程序模塊只會啓動我已簽名的核心應用程序,因爲未簽名的應用程序可以取代定義低級別保護的權限,然後使用我簽名的模塊。 – Dennix 2012-07-12 19:05:46
您可以通過使用不同的軟件包名稱,簽名和protectionLevel = normal來創建應用的修改版本來設置測試。看看兩個應用程序在同一臺設備上會發生什麼。我的猜測是,a)簽名檢查將首先啓動,並確保流氓應用程序無法訪問需要正確簽名的應用程序。和b)具有不同保護級別的相同許可字符串可以共存於同一設備上。 – tiguchi 2012-07-12 19:08:00