Приложения из "Неизвестных источников" ограничены разрешениями?

Я знаю, что приложения Google Play не могут делать ничего, что не прописано в них AndroidManifest.xml, и будут заблокированы. Я хочу знать, заблокированы ли приложения, не принадлежащие Google Play, такими же мерами безопасности.

Будет ли Android сообщать мне, какие разрешения им требуются перед установкой, и блокировать функции, использующие разрешения, не указанные в манифесте приложений, отличных от Google Play? Потому что Google говорит:

В случае, если приложение пытается использовать защищенную функцию, которая не была объявлена ​​в манифесте приложения, сбой разрешения обычно приводит к тому, что в приложение возвращается исключение безопасности. Проверки разрешений защищенного API применяются на самом низком возможном уровне, чтобы предотвратить обход. Пример обмена сообщениями с пользователем при установке приложения при запросе доступа к защищенным API показан на рисунке 2.

Это относится к приложениям не из Google Play?

Я ценю любую дополнительную информацию по этому вопросу, которую вы хотели бы предоставить. Я немного изучаю безопасность Android.

Ответы (2)

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

См. раздел «Использование разрешений» здесь: http://developer.android.com/guide/topics/security/permissions.html .

Таким образом, преимущество магазина Google Play заключается в том простом факте, что Google контролирует его и следит за эксплойтами. Какая бы ни была внутренняя безопасность Android для приложений Google Play, она по-прежнему применяется к приложениям вне магазина.
Довольно много, да. Вот почему вы всегда должны всегда всегда проверять разрешения.
Скажет ли он вам, какие разрешения требуются для приложения (должен ли я сделать это отдельным вопросом)?
Google Play сообщит вам, какие разрешения объявило приложение, прежде чем вы его установите. Установка из .apk покажет вам разрешения в начале процесса установки.
Эксплойты нулевого дня по-прежнему могут атаковать пользователей из Google Play, пока они не будут удалены. По сути, это просто регулирование. Магазин Amazon может быть таким же безопасным. Даже учитывая разрешения, хакеры могли найти некоторые уязвимости.

Будет ли Android сообщать мне, какие разрешения им требуются перед установкой?

В общем, да. В большинстве (если не во всех) устройствах Android есть системное приложение под названием «Установщик пакетов», которое управляет установкой/обновлением приложения. Когда вы устанавливаете APK-файл из неизвестного источника, это приложение запускается и показывает все разрешения, запрашиваемые приложением, что выглядит следующим образом:

Установщик пакетов на KitKat

Установщик пакетов на KitKat

Будет ли Android блокировать функции, использующие разрешения, не указанные в манифесте приложений, не принадлежащих Google Play?

Во время установки Android не проверяет/не проверяет, требует ли функция специального разрешения для запуска. Другими словами, пользователь по-прежнему может установить приложение. Тем не менее, приложение будет вызывать ошибки SecurityException(которые могут аварийно завершать работу/вести себя непредсказуемо/ничего не делать, в зависимости от того, как оно обрабатывается) при запуске функции, для которой требуется разрешение, но которая не объявлена ​​в файле манифеста. Это относится ко всем приложениям, независимо от того, где они установлены .

Пример : выполнение сетевой операции без объявления <uses-permission android:name="android.permission.INTERNET" />приведет к сбою приложения с трассировкой стека:

E/AndroidRuntime(18698): Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)

.

^ Я не совсем ясно выразился, я отредактировал. Пожалуйста, смотрите мое редактирование.
@munchschair обновил ответ