2014-12-17 4 views
3

Я недавно читал о специальном разрешении для нашего приложения в android.Пользовательское разрешение для приложения

uses-permission прозрачный. Он содержит разрешение, которое потребуется вашему приложению для доступа к некоторым пользовательским данным или функциям устройства и т. Д. И для правильной работы.

Теперь мы пришли к permission элементам. Он объявляет разрешения, деятельность или услуги могут потребоваться другие приложения держать, чтобы использовать данные или логику

вашего приложения Теперь, скажем, я использую разрешение тег в файле манифеста моего приложения, такие как:

<permission android:name="my.pkg.CUST_PER"/> 

Это будет означать что мое приложение может иметь это возможное разрешение.

и применять это разрешение использовать его в своей деятельности теге так:

<activity 
    android:name=".MyApp" 
    android:permission="my.pkg.CUST_PER"> 

Теперь, согласно моему пониманию, только приложения, которые запросили мое указанное разрешение будет иметь возможность получить доступ к обеспеченным компоненты моего приложения.

Если другое приложение пытается получить доступ к этим компонентам без моего собственного разрешения, что произойдет? Я думаю, он должен врезаться, и что видно в LogCat как:

SecurityException: Missing permission: my.pkg.CUST_PER 

Если это так, не то, что нарушение правил безопасности?

Как защитить данные приложения при таких обстоятельствах?

+2

Просто хотел указать на эту уязвимость: http://commonsware.com/blog/2014/02/12/vulnerabilities-custom-permissions.html – shkschneider

ответ

4

использует-разрешение ясно. Он содержит разрешение, которое потребуется вашему приложению для доступа к некоторым пользовательским данным или функциям устройства и т. Д. И для правильной работы.

<uses-permission> означает, что ваше приложение хочет сохранить разрешение, указанное в элементе <uses-permission>. То, что защищено этим разрешением, зависит от других разработчиков. В некоторых случаях это может защищать некоторые вещи, которые позволяют вам «получать доступ к некоторым пользовательским данным или функциям устройства».

Это будет означать, что мое приложение может иметь это возможное разрешение.

Нет, это не так. Он просто определяет новое разрешение. В нем не указано, что ваше приложение или любое другое приложение имеют какое-либо другое отношение к разрешению.

Теперь, согласно моему пониманию, только приложения, которые запросили мое указанное разрешение, смогут получить доступ к защищенным компонентам моего приложения.

Более точно, только приложения с элементом <uses-permission> могут претендовать на доступ к защищенному компоненту. Кроме того, как отмечает г-н Орловски, protectionLevel из <permission> указывает, принимается ли принятие пользователя (protectinoLevel от normal или dangerous), если приложение должно быть подписано с помощью того же ключа подписи, что и приложение, которое защищает себя разрешение (a protectionLevel от signature), или если приложение необходимо установить на раздел /system (a protectionLevel от system).

Если другое приложение пытается получить доступ к этим компонентам без моего личного разрешения, что произойдет? Я думаю, что это должно потерпеть крах, и это будет видно в logcat как: Требуется это разрешение: my.pkg.CUST_PER

Исправить.

Если да, разве это не нарушение безопасности?

Не особо.

Как защитить данные приложения при таких обстоятельствах?

Не подвергайте его воздействию в первую очередь. полной и вся точки за имея android:permission потому, что вы хотите других приложений, чтобы иметь доступ к данным, при условии принятия пользователя, подстать подписи, и т.д. Если вы не хотите, чтобы другие приложения, чтобы иметь доступ к данным , не экспортируйте компонент. Для видов деятельности, услуг и манифеста-зарегистрированных приемников это обычно достигается за счет отсутствия <intent-filter>. Для элементов <provider> вам необходимо вручную установить атрибут android:exported на false.

Смежные вопросы