android:wyeksportowany,
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Kategoria OWASP: MASVS-PLATFORM: Platform Interaction
Omówienie
android:exported
Atrybut określa, czy komponent (aktywność, usługa, odbiornik transmisji itp.) może być uruchamiany przez komponenty innych aplikacji:
- Jeśli
true
, każda aplikacja może uzyskać dostęp do aktywności i uruchomić ją za pomocą dokładnej nazwy klasy.
- Jeśli jest to
false
, aktywność mogą uruchamiać tylko komponenty tej samej aplikacji, aplikacje z tym samym identyfikatorem użytkownika lub uprzywilejowane komponenty systemowe.
Logika domyślnej wartości tego atrybutu zmieniała się z czasem i była różna w zależności od typów komponentów i wersji Androida. Na przykład na poziomie interfejsu API 16 (Android 4.1.1) lub starszym wartość elementów <provider>
jest domyślnie ustawiona na true
. Jeśli nie ustawisz tego atrybutu, na niektórych urządzeniach mogą być używane różne wartości domyślne.
Wpływ
Sytuacja z różnymi wartościami domyślnymi oznacza, że możesz przypadkowo udostępnić wewnętrzne komponenty aplikacji. Oto kilka przykładów konsekwencji:
Ataki typu DoS.
Inne aplikacje uzyskują nieodpowiedni dostęp do komponentów wewnętrznych, aby modyfikować wewnętrzne funkcje Twojej aplikacji.
wyciek danych wrażliwych,
wykonanie kodu w kontekście podatnej na ataki aplikacji;
Środki ograniczające ryzyko
Zawsze wyraźnie ustawiaj atrybut android:exported
. Nie pozostawi to miejsca na interpretację i wyraźnie zasygnalizuje Twoje intencje dotyczące widoczności komponentu.
Polecane dla Ciebie
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-27 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)"]]