android:exported

دسته OWASP: MASVS-PLATFORM: تعامل پلاتفرم

نمای کلی

مشخصه android:exported تعیین می‌کند که آیا مؤلفه (فعالیت، سرویس، گیرنده رویداد ثبت‌شده، و غیره) می‌تواند توسط مؤلفه‌های برنامه‌های دیگر راه‌اندازی شود یا نه:

  • اگر true، هر برنامه‌ای می‌تواند به فعالیت دسترسی داشته باشد و آن را با نام دقیق کلاسش راه‌اندازی کند.
  • اگر false، فقط مؤلفه‌های همان برنامه، برنامه‌هایی با شناسه کاربر یکسان، یا مؤلفه‌های سیستم ممتاز می‌توانند فعالیت را راه‌اندازی کنند.

منطق پشت مقدار پیش‌فرض این مشخصه درطول زمان تغییر کرده است و بسته به نوع مؤلفه و نسخه Android متفاوت بوده است. برای مثال، در سطح میانای برنامه‌سازی کاربردی ۱۶ (Android 4.1.1) یا پایین‌تر، مقدار عناصر <provider> به‌طور پیش‌فرض روی true تنظیم شده است. تنظیم نکردن صریح این مشخصه ممکن است باعث شود مقادیر پیش‌فرض در برخی‌از دستگاه‌ها متفاوت باشد.

تأثیر

وضعیت با مقادیر پیش‌فرض متفاوت به این معنی است که ممکن است به‌طور تصادفی مؤلفه‌های برنامه داخلی را افشا کنید. چند نمونه از پیامدها می‌تواند شامل موارد زیر باشد:

حملات محروم‌سازی از سرویس. برنامه‌های دیگر به‌طور نامناسب به مؤلفه‌های داخلی دسترسی پیدا می‌کنند تا عملکرد داخلی برنامه‌تان را تغییر دهند. نشت داده‌های حساس. اجرای کد در بافت برنامه آسیب‌پذیر.

کاهش آسیب‌ها

همیشه مشخصه android:exported را به‌طور صریح تنظیم کنید. این کار جایی برای تفسیر باقی نمی‌گذارد و قصد شما را درخصوص رؤیت‌پذیری مؤلفه به‌وضوح نشان می‌دهد.