اللوائح البيضاء في كوردوفا
لوائح النطاقات البيضاء (Domain whitelisting) هي نموذج أمني يضبط إمكانية الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر كوردوفا سياسة أمنية قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها.
افتراضيًّا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء لائحة بيضاء، وتحديد النطاقات (domains) والنطاقات الفرعية (subdomains) المسموح بالوصول إليها.
بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإنَّ السياسة الأمنية لكوردوفا قابلة للتوسيع عبر استخدام الإضافات. يجب أن يستخدم تطبيقك الإضافة "اللائحة البيضاء"، لأنَّها أكثر أمانًا وقابليةً للتخصيص مقارنة بالإصدارات السابقة من كوردوفا. على الرغم من أنَّه من الممكن تنفيذ إضافة خاصة باللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل حول كيفية الاستخدام والإعداد.
بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات W3C للوصول إلى الأدوات (widget)، التي تعتمد على العنصر <access>
في الملف config.xml
الخاص بالتطبيق لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على واجهة سطر الأوامر (CLI)، فهذا الملف موجود في المجلد الأعلى للمشروع. أما بالنسبة لمسارات التطوير الخاصة بمنصات معينة، فقد أدرجناها في الأقسام أدناه.
توضح الأمثلة التالية كيفية صياغة اللوائح البيضاء في العنصر <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 و https://wiki.hsoub.com:
<access origin="*" />
هذه هي القيمة الافتراضية لمشاريع واجهة سطر الأوامر (CLI) المُنشأة حديثًا.
تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلًا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق http://www.google.com
التوجيه نحو https://www.google.com
لأجل استخدام البروتوكول SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل https://www.google.co.uk
. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية أو مُعدلة في اللائحة البيضاء تتجاوز متطلباتك الأولية. يرجى أخذ هذا بالحسبان إبّان بناء قائمتك البيضاء.
لاحظ أنَّ القائمة البيضاء تنطبق فقط على العرض webview
الرئيسي في كوردوفا، ولا تنطبق على العرض webview
في InAppBrowser
أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.
اللوائح البيضاء في أندرويد
كما ورد في الأعلى، راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل.
اللوائح البيضاء في iOS
لا يتطلب الإصدار 4.0 من Cordova-ios فما فوق تثبيت إضافة اللائحة البيضاء، لكن تنطبق مع ذلك تفاصيل إعدادها على منصة iOS.
الوسمان <allow-intent>
و <allow-navigation>
جديدان في الإصدارات cordova-ios 4.x وما بعدها، لذا راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل حول استخدام هذه الوسوم.
ميزة الخصوصية ATS (اختصار للعبارة Application Transport Security) جديدة في منصة iOS 9 (Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل واجهة سطر الأوامر الخاصة بكوردوفا الوسمين <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' ></div>
في منصة 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' ></div>
ارجع إلى صفحة ATS لمزيد من التفاصيل.