Android: экспортировано
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Категория OWASP: MASVS-ПЛАТФОРМА: Взаимодействие платформы
Обзор
Атрибут android:exported
определяет, может ли компонент (активность, сервис, приемник вещания и т. д.) запускаться компонентами других приложений:
- Если
true
, любое приложение может получить доступ к действию и запустить его по точному имени класса. - Если
false
, только компоненты одного и того же приложения, приложения с тем же идентификатором пользователя или привилегированные системные компоненты могут запускать это действие.
Логика значения этого атрибута по умолчанию со временем менялась и различалась в зависимости от типов компонентов и версий Android. Например, на уровне API 16 (Android 4.1.1) или ниже для элементов <provider>
по умолчанию установлено значение true
. Если этот атрибут не задан явно, существует риск того, что на некоторых устройствах будут разные значения по умолчанию.
Влияние
Ситуация с разными значениями по умолчанию означает, что вы можете случайно раскрыть внутренние компоненты приложения. Несколько примеров последствий могут быть следующими:
Атаки типа «отказ в обслуживании». Другие приложения неправомерно получают доступ к внутренним компонентам для изменения внутренних функций вашего приложения. Утечка конфиденциальных данных. Выполнение кода в контексте уязвимого приложения.
Смягчения
Всегда явно устанавливайте атрибут android:exported
. Это не оставит места для интерпретации и четко сигнализирует о вашем намерении относительно видимости компонента.
{% дословно %}
{% дословно %} Рекомендуется для вас
{% дословно %} {% дословно %}
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[null,null,["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# android:exported\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-PLATFORM: Platform Interaction](https://mas.owasp.org/MASVS/09-MASVS-PLATFORM)\n\nOverview\n--------\n\nThe `android:exported` [attribute](/guide/topics/manifest/activity-element#exported) sets whether a component (activity, service, broadcast receiver, etc.) can be launched by components of other applications:\n\n- If `true`, any app can access the activity and launch it by its exact class name.\n- If `false`, only components of the same application, applications with the same user ID, or privileged system components can launch the activity.\n\nThe logic behind the default value of this attribute changed over time and was different depending on the component types and Android versions. For example, on API level 16 (Android 4.1.1) or lower the value for `\u003cprovider\u003e` elements is set to `true` by default. Not setting this attribute explicitly carries the risk of having different default values between some devices.\n\nImpact\n------\n\nThe situation with different default values means you could accidentally expose internal application components. A few examples of the consequences could be the following:\n\nDenial of service attacks.\nOther apps inappropriately accessing internal components to modify your app's internal functionality.\nLeaking of sensitive data.\nCode execution in the context of the vulnerable application.\n\nMitigations\n-----------\n\nAlways explicitly set the `android:exported` attribute. This will leave no room for interpretation and clearly signal your intention with regard to a component's visibility.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [# Key management {:#key-management}](/topic/security/data)\n- [Run embedded DEX code directly from APK](/topic/security/dex)\n- [Tapjacking](/topic/security/risks/tapjacking)"]]