الاستخدام غير الآمن للروابط لصفحات في التطبيق
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
فئة OWASP: MASVS-PLATFORM: Platform Interaction (التفاعل مع النظام الأساسي)
نظرة عامة
تنشأ المخاطر الأمنية المرتبطة بروابط الصفحات في التطبيق من قدرتها الأساسية على
السماح بالتنقّل والتفاعل السلسَين داخل تطبيقات الأجهزة الجوّالة. تنشأ ثغرات الأمان في الروابط لصفحات في التطبيق من نقاط ضعف في تنفيذ تلك الروابط أو التعامل معها. يمكن أن يستغل الجهات الفاعلة الضارّة هذه العيوب للوصول إلى
وظائف أو بيانات مميّزة، ما قد يؤدي إلى عمليات اختراق للبيانات وانتهاكات للخصوصية
وإجراءات غير مصرَّح بها. ويمكن للمهاجمين استغلال هذه الثغرات من خلال أساليب متنوعة، مثل هجمات اختراق الروابط لصفحات في التطبيق والتحقّق من صحة البيانات.
التأثير
يمكن أن يؤدي عدم توفّر آلية التحقّق المناسبة من الروابط لصفحات في التطبيق أو الاستخدام غير الآمن لتلك الروابط إلى مساعدة المستخدمين الضارّين في تنفيذ هجمات، مثل التحايل على عملية التحقّق من المضيف وتنفيذ النصوص البرمجية على مستوى التطبيقات المختلفة وتنفيذ الرموز البرمجية عن بُعد في سياق أذونات التطبيق المعرض للاختراق. استنادًا إلى طبيعة
التطبيق، يمكن أن يؤدي ذلك إلى الوصول غير المصرّح به إلى البيانات أو
الوظائف الحسّاسة.
إجراءات التخفيف
منع الاستيلاء على الروابط لصفحات في التطبيق
يسمح نظام التشغيل Android بشكلٍ مُصمَّم لعدة تطبيقات بتسجيل فلاتر الأهداف لعنوان URI لرابط التمرير السريع نفسه. لمنع التطبيقات الخبيثة من اعتراض الروابط لصفحات في تطبيقك، عليك تنفيذ سمة android:autoVerify
في intent-filter
ضمن AndroidManifest
التطبيق. يتيح ذلك للمستخدمين اختيار
التطبيق المفضّل لديهم لمعالجة الروابط لصفحات في التطبيق، ما يضمن تنفيذ العملية المقصودة ويمنع التطبيقات الضارة من تفسيرها تلقائيًا.
قدّم نظام Android 12 معالجة أكثر صرامة لأهداف الويب لتحسين مستوى الأمان.
يجب الآن التحقّق من التطبيقات للتعامل مع الروابط من نطاقات معيّنة، إما من خلال
روابط تطبيقات Android أو اختيار المستخدم في إعدادات النظام. ويمنع ذلك التطبيقات من
اختطاف الروابط التي لا يُفترض أن تتعامل معها.
لتفعيل ميزة التحقّق من معالجة الروابط في تطبيقك، أضِف فلاتر أهداف تتطابق مع
التنسيق التالي (تم أخذ هذا المثال من مستندات التحقّق من روابط
تطبيقات Android):
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
تنفيذ عملية قوية للتحقّق من صحة البيانات
يمكن أن تتضمّن الروابط لصفحات في التطبيق مَعلمات إضافية يتم عرضها على الغاية المستهدفة، على سبيل المثال، لتنفيذ إجراءات إضافية. إنّ الأساس في التعامل الآمن مع ملفّات الوسائط العميقة هو التحقّق الصارم من صحة البيانات. على المطوّرين التحقّق بدقة من جميع البيانات الواردة من الروابط لصفحات في التطبيق
وتنظيفها لمنع برمجة أو قيم ضارة من الحقن في التطبيق المشروع.
ويمكن تنفيذ ذلك من خلال التحقّق من قيمة أي مَعلمة لرابط صفحة في التطبيق مقارنةً بجدول أبيض محدّد مسبقًا للقيم المتوقّعة.
يجب أن تتحقّق التطبيقات من الحالات الداخلية الأخرى ذات الصلة، مثل حالة المصادقة
أو التفويض، قبل الكشف عن المعلومات الحسّاسة. على سبيل المثال، قد يكون هناك
مكافأة مقابل إكمال مستوى في لعبة. في هذه الحالة، من المهم التحقّق من
شرط أساسي وهو إكمال المستوى، وإعادة التوجيه إلى الشاشة الرئيسية
في حال عدم استيفاء هذا الشرط.
المراجع
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Unsafe use of deep links\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 security risks associated with deep links stem from their core capability of\nenabling seamless navigation and interaction within mobile applications. Deep\nlink vulnerabilities arise from weaknesses in the implementation or handling of\ndeep links. These flaws can be exploited by malicious actors to gain access to\nprivileged functions or data, potentially resulting in data breaches, privacy\nviolations, and unauthorized actions. Attackers can exploit these\nvulnerabilities through various techniques, such as deep link hijacking and data\nvalidation attacks.\n\nImpact\n------\n\nThe lack of a proper deep link validation mechanism, or the unsafe use of\ndeeplinks, can aid malicious users in performing attacks such as host validation\nbypass, cross-app scripting, and remote code execution within the permissions\ncontext of the vulnerable application. Depending on the nature of the\napplication, this can result in unauthorized access to sensitive data or\nfunctions.\n\nMitigations\n-----------\n\n### Prevent deep link hijacking\n\nBy design, Android allows multiple apps to register intent filters for the same\ndeep link URI. To prevent malicious apps from intercepting deep links intended\nfor your app, implement the `android:autoVerify` attribute in `intent-filter`\nwithin the application's `AndroidManifest`. This allows users to select their\npreferred app for handling deep links, ensuring the intended operation and\npreventing malicious applications from automatically interpreting them.\n\nAndroid 12 [introduced](/about/versions/12/behavior-changes-all#web-intent-resolution) stricter handling of web intents to improve security.\nApps must now be verified to handle links from specific domains, either through\nAndroid App Links or user selection in system settings. This prevents apps from\nhijacking links they shouldn't handle.\n\nTo enable link handling verification for your app, add intent filters that match\nthe following format (this example is taken from the [Verify Android App\nLinks](/training/app-links/verify-android-applinks) documentation): \n\n \u003c!-- Make sure you explicitly set android:autoVerify to \"true\". --\u003e\n \u003cintent-filter android:autoVerify=\"true\"\u003e\n \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n \u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n \n \u003c!-- If a user clicks on a shared link that uses the \"http\" scheme, your\n app should be able to delegate that traffic to \"https\". --\u003e\n \u003cdata android:scheme=\"http\" /\u003e\n \u003cdata android:scheme=\"https\" /\u003e\n \n \u003c!-- Include one or more domains that should be verified. --\u003e\n \u003cdata android:host=\"...\" /\u003e\n \u003c/intent-filter\u003e\n\n### Implement robust data validation\n\nDeep links can include additional parameters that are served to the target\nintent, for example, to perform further actions. The foundation of secure deep\nlink handling is stringent data validation. All incoming data from deep links\nshould be meticulously validated and sanitized by developers to prevent\nmalicious code or values from being injected within the legitimate application.\nThis can be implemented by checking the value of any deep link parameter against\na predefined allowlist of expected values.\n\nApps should check other relevant internal states, such as authentication state,\nor authorization, before exposing sensitive information. An example might be a\nreward for completing a level of a game. In this case it's worth validating the\nprecondition of having completed the level, and redirecting to the main screen\nif not.\n\nResources\n---------\n\n- [Verify Android App Links](/training/app-links/verify-android-applinks)\n- [Handling Android App Links](/training/app-links)\n- [Web intent resolution](/about/versions/12/behavior-changes-all#web-intent-resolution)\n- [Account takeover intercepting magic link for Arrive app](https://hackerone.com/reports/855618)\n- [Deep Links \\& WebViews Exploitations Part I](https://www.justmobilesec.com/en/blog/deep-links-webviews-exploitations-part-I)\n- [Deep Links \\& WebViews Exploitations Part II](https://www.justmobilesec.com/en/blog/deep-links-webviews-exploitations-part-II)\n- [Recent suggestion of a deep link issue in Jetpack Navigation](https://swarm.ptsecurity.com/android-jetpack-navigation-go-even-deeper/)"]]