android:exported
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Kategori OWASP: MASVS-PLATFORM: Interaksi Platform
Ringkasan
Atribut android:exported
menetapkan apakah komponen (aktivitas, layanan, penerima siaran, dll.) dapat diluncurkan oleh komponen aplikasi lain:
- Jika
true
, aplikasi apa pun dapat mengakses aktivitas dan meluncurkannya berdasarkan nama class yang tepat.
- Jika
false
, hanya komponen aplikasi yang sama, aplikasi dengan ID pengguna yang sama, atau komponen sistem dengan hak istimewa yang dapat meluncurkan aktivitas.
Logika di balik nilai default atribut ini berubah dari waktu ke waktu dan berbeda-beda, bergantung jenis komponen dan versi Android. Misalnya, pada level API 16 (Android 4.1.1) atau lebih rendah, nilai elemen <provider>
ditetapkan ke true
secara default. Tidak menetapkan atribut ini secara eksplisit berisiko memiliki nilai default yang berbeda di antara beberapa perangkat.
Dampak
Situasi dengan nilai default yang berbeda berarti Anda dapat secara tidak sengaja mengekspos komponen aplikasi internal. Beberapa contoh konsekuensinya adalah sebagai berikut:
Serangan denial of service.
Aplikasi lain mengakses komponen internal secara tidak tepat untuk memodifikasi fungsi internal aplikasi Anda.
Kebocoran data sensitif.
Eksekusi kode dalam konteks aplikasi rentan.
Mitigasi
Selalu tetapkan atribut android:exported
secara eksplisit. Hal ini tidak akan memberikan ruang untuk penafsiran dan secara jelas menunjukkan niat Anda sehubungan dengan visibilitas komponen.
Direkomendasikan untuk Anda
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2023-12-14 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2023-12-14 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)"]]