Permissions
Использование
Создание разрешений:
Если другое приложение захочет использовать это разрешение:
Это разрешение будет запрошено у пользователя перед установкой (и использованием, если это разрешение было запрошено динамически).
Protection Level
normal
: это разрешение невидимо для пользователя (оно выдается автоматически без участия пользователя)dangerous
: требует подтверждение пользователяsignature
: приложение, которое запрашивает доступ, должно быть подписано тем же сертификатом, что и приложение, которое это разрешение определило (система не позволит установиться приложению, которое запросило это разрешение черезuses-permission
и не было подписано корректным сертификатом).Другие привилегии, используемые системными приложениями:
system
,installer
,privileged
, ... Эти привилегии не могут быть запрошены черезuses-permission
.
Mistakes
Forgot ProtectionLevel
Если не указать ProtectionLevel
, по умолчанию будет установлен normal
.
Ecosystem mistakes
Пусть есть два приложения, подписанные на одном сертификате. В одном из приложений определено разрешение с ProtectionLevel = signature
:
App 1:
App 2:
К AllUserNotesContentProvider
только App 1 сможет получить доступ (ну и само App 2). Но что, если будет установлено только упражнение App 2? Система поставит для разрешения com.mycoolcam.USE_COOL_CAMERA
ProtectionLevel
в normal
и любое приложение сможет получить доступ к ContentProvider
'у.
Mitigation: убедиться, что все расширения вашей экосистемы так же определены в каждом вашем приложении.
File permissions
Не должны создаваться файлы с разрешениями: MODE_WORLD_READABLE
, MODE_WORLD_WRITABLE
Для расшаривания файлов существует ContentProvider
!
Last updated
Was this helpful?