Пользовательское разрешение для приложения

Недавно я читал о пользовательских разрешениях для нашего приложения в android.

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

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

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

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

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

И применяйте это разрешение, используя его в своем теге Activity следующим образом:

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

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

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

 SecurityException: Missing permission: my.pkg.CUST_PER 

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

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

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

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

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

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

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

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

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

Верный.

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

Не особенно.

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

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

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

Вы должны прочитать целые документы как android:protectionLevel существует точно для решения этой проблемы и объясняется здесь:

https://developer.android.com/guide/topics/manifest/permission-element.html#plevel

Intereting Posts