اللوائح البيضاء في Cordova
اللائحة البيضاء للمواقع (Domain whitelisting) هي نموذج أمني يتحكم في الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر Cordova سياسة أمان قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها. افتراضيا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء قائمة بيضاء والسماح بالوصول إلى نطاقات (domains) ونطاقات فرعية (subdomains) محددة.
بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإن سياسة أمان Cordova قابلة للتوسيع عبر الإضافات. يجب أن يستخدم تطبيقك الإضافة [../../../reference/cordova-plugin-whitelist/ cordova-plugin-whitelist]، لأنها أكثر أمانًا، وقابلية للتخصيص مقارنة بالإصدارات السابقة من Cordova. على الرغم من أنه من الممكن تقديم إضافة اللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع صفحة [../../../reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] لمزيد من التفاصيل حول الاستخدام والإعداد.
بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات W3C Widget Access، التي تعتمد على العنصر <access>
داخل ملف config.xml
الخاص بالتطبيق، لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على واجهة سطر الأوامر (CLI) الموضحة في الصفحة [../../cli/index.html The Command-Line Interface]، فهذا الملف موجود في المجلد الأعلى للمشروع. بخلاف ذلك، بالنسبة لمسارات التطوير الخاصة بمنصات معينة، يتم إدراج المواقع في الأقسام أدناه.
توضح الأمثلة التالية صياغة القوائم البيضاء في العنصر <access>
:
الوصول إلى google.com:
<access origin="http://google.com" />
الوصول إلى النطاق الآمن google.com (https://
):
<access origin="https://google.com" />
الوصول إلى النطاق الفرعي maps.google.com:
<access origin="http://maps.google.com" />
الوصول إلى جميع النطاقات الفرعية في google.com، على سبيل المثال mail.google.com و docs.google.com:
<access origin="http://*.google.com" />
الوصول إلى جميع النطاقات، على سبيل المثال، google.com و developer.mozilla.org:
<access origin="*" />
هذه هي القيمة الافتراضية لمشاريع واجهة سطر الأوامر (CLI) التي تم إنشاؤها حديثًا.
تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق http://www.google.com
التوجيه نحو https://www.google.com
لاستخدام SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل https://www.google.co.uk
. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية في اللائحة البيضاء أو مُعدلة تتجاوز متطلباتك الأولية. يرجى أخذ هذا بعين الاعتبار إبّان بناء قائمتك البيضاء.
لاحظ أن القائمة البيضاء تنطبق فقط على معرض webview الرئيسي في Cordova، ولا تنطبق على معرض webview InAppBrowser أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.
اللوائح البيضاء في أندرويد
على النحو الوارد أعلاه، راجع صفحة [../../../reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] للحصول على التفاصيل. بالنسبة إلى نسخ أندرويد السابقة للإصدار 4.0.0، راجع الإصدارات القديمة من هذه الوثائق.
اللوائح البيضاء في iOS
لا يتطلب الإصدار 4.0 من Cordova-ios
فما فوق تثبيت not الإضافة [../../../reference/cordova-plugin-whitelist/ cordova-plugin-whitelist]، لكن مع ذلك تنطبق تفاصيل إعدادها على منصة iOS أيضًا. الوسمان <allow-intent>
و <allow-navigation>
جديدان في الإصدارات cordova-ios 4.x وما بعدها، راجع توئيق [../../../reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] لمزيد من التفاصيل حول استخدام هذه الوسوم.
بالنسبة لإصدارات Cordova-ios التي تسبق الإصدار 4.0.0، راجع الإصدارات القديمة من هذا التوثيق.
Application Transport Security (ATS) جديد في iOS 9 (Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل واجهة سطر الأوامر الخاصة بـ cordova الوسمين <access>
و <allow-navigation>
تلقائيًا إلى مُوجّهات ATS المناسبة.
يدعم الوسمان <access>
و <allow-navigation>
الخاصيات الثلاثة المذكورة أدناه، والتي لها مقابلاتها في ATS:
- minimum-tls-version (سلسلة نصية، قيمتها الافتراضية تساوي 'TLSv1.2')
- requires-forward-secrecy (قيمة منطقية، قيمتها الافتراضية تساوي 'true')
- requires-certificate-transparency (قيمة منطقية، قيمتها الافتراضية تساوي "false"، جديدة في iOS 10)
مثال:
<access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' />
في منصة iOS 10 وما فوقها، يدعم الوسم <access>
الخاصيات الثلاثة أدناه، وعند إقرانها مع المحرف العام *
. فهذه الخاصيات لها أيضا ما يعادلها في ATS:
- allows-arbitrary-loads-for-media (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10، وجديدة في cordova-ios@4.5.0، مُعدلة لاستخدام اسم الخاصية المناسبة). الخاصية القديمة
allows-arbitrary-loads-in-media
صارت الآن مُتجاوزة. - allows-arbitrary-loads-in-web-content (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10)
- allows-local-networking (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10)
مثال:
<access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
راجع صفحة ATS Technote لمزيد من التفاصيل.