الفرق بين المراجعتين ل"Cordova/whitelist"
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:اللوائح البيضاء في Cordova}}</noinclude> تصنيف: Cordova تصنيف: whitelist اللائحة البيضاء ل...') |
|||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:اللوائح البيضاء في Cordova}}</noinclude> | <noinclude>{{DISPLAYTITLE:اللوائح البيضاء في Cordova}}</noinclude> | ||
− | [[تصنيف: Cordova]] | + | [[تصنيف: Cordova]] |
[[تصنيف: whitelist]] | [[تصنيف: whitelist]] | ||
− | + | لوائح النطاقات البيضاء (Domain whitelisting) هي نموذج أمني يضبط إمكانية الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر Cordova سياسة أمنية قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها. | |
− | + | افتراضيا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء لائحة بيضاء، وتحديد النطاقات (domains) والنطاقات الفرعية (subdomains) المسموح بالوصول إليها. | |
− | بالنسبة | + | بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإن السياسة الأمنية لـ Cordova قابلة للتوسيع عبر الإضافات. يجب أن يستخدم تطبيقك الإضافة [https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ cordova-plugin-whitelist]، لأنها أكثر أمانًا وقابلية للتخصيص مقارنة بالإصدارات السابقة من Cordova. على الرغم من أنه من الممكن تقديم (implement) إضافة خاصة باللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع صفحة [https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] لمزيد من التفاصيل حول الاستخدام والإعداد. |
− | + | بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات [http://www.w3.org/TR/widgets-access/ W3C Widget Access]، التي تعتمد على العنصر <code><access></code> داخل ملف <code>config.xml</code> الخاص بالتطبيق لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على [[Cordova/cli|واجهة سطر الأوامر (CLI)]]، فهذا الملف موجود في المجلد الأعلى للمشروع. وبالنسبة لمسارات التطوير الخاصة بمنصات معينة، تٌدرج المواقع في الأقسام أدناه. | |
− | الوصول إلى [http://google.com | + | توضح الأمثلة التالية كيفية صياغة اللوائح البيضاء في العنصر <code><access></code>: |
− | <syntaxhighlight><access origin="http://google.com" /></syntaxhighlight> | + | * الوصول إلى [http://google.com/ google.com]: |
+ | <syntaxhighlight lang="xml"><access origin="http://google.com" ></div></syntaxhighlight> | ||
+ | * الوصول إلى النطاق الآمن [https://google.com/ google.com] (<code><nowiki>https://</nowiki></code>): | ||
+ | <syntaxhighlight lang="xml"><access origin="https://google.com" ></div></syntaxhighlight> | ||
+ | * الوصول إلى النطاق الفرعي [http://maps.google.com/ maps.google.com]: | ||
+ | <syntaxhighlight lang="xml"><access origin="http://maps.google.com" ></div></syntaxhighlight> | ||
+ | * الوصول إلى جميع النطاقات الفرعية في [http://google.com/ google.com]، على سبيل المثال [http://mail.google.com/ mail.google.com] و [http://docs.google.com/ docs.google.com]: | ||
+ | <syntaxhighlight lang="xml"><access origin="http://*.google.com" ></div></syntaxhighlight> | ||
+ | * الوصول إلى جميع النطاقات، على سبيل المثال، [http://google.com/ google.com] و [https://wiki.hsoub.com/ https://wiki.hsoub.com]: | ||
+ | <syntaxhighlight lang="xml"><access origin="*" ></div></syntaxhighlight>هذه هي القيمة الافتراضية لمشاريع [[Cordova/cli|واجهة سطر الأوامر (CLI)]] المُنشأة حديثًا. | ||
− | + | تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق <code>[http://www.google.com/ http://www.google.com]</code> التوجيه نحو <code>[https://www.google.com/ https://www.google.com]</code> لأجل استخدام البروتوكول SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل <code>[https://www.google.co.uk/ https://www.google.co.uk]</code>. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية أو مُعدلة في اللائحة البيضاء تتجاوز متطلباتك الأولية. يرجى أخذ هذا بعين الاعتبار إبّان بناء قائمتك البيضاء. | |
− | < | ||
− | + | لاحظ أن القائمة البيضاء تنطبق فقط على معرض <code>[[Cordova/webviews|webview]]</code> الرئيسي في Cordova، ولا تنطبق على معرض [[Cordova/webviews|<code>webview</code>]] في <code>InAppBrowser</code> أو الروابط المفتوحة في متصفح الويب الخاص بالنظام. | |
− | < | + | ==اللوائح البيضاء في أندرويد== |
+ | مماثل لما ورد في الأعلى، راجع صفحة [https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] لمزيد من التفاصيل. | ||
+ | ==اللوائح البيضاء في iOS== | ||
+ | لا يتطلب الإصدار 4.0 من <code>Cordova-ios</code> فما فوق تثبيت الإضافة [https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ cordova-plugin-whitelist]، لكن تنطبق مع ذلك تفاصيل إعدادها على منصة iOS أيضًا. | ||
− | + | الوسمان <code><allow-intent></code> و <code><allow-navigation></code> جديدان في الإصدارات cordova-ios 4.x وما بعدها، راجع توئيق [https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/ cordova-plugin-whitelist] لمزيد من التفاصيل حول استخدام هذه الوسوم. | |
− | |||
− | + | ميزة الخصوصية [https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33 Application Transport Security (ATS)] جديدة في منصة iOS 9 (Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل [[Cordova/cli|واجهة سطر الأوامر]] الخاصة بـ cordova الوسمين <code><access></code> و <code><allow-navigation></code> تلقائيًا إلى مُوجّهات ATS المناسبة. | |
− | < | ||
− | + | يدعم الوسمان <code><access></code> و <code><allow-navigation></code> الخاصيات الثلاثة المذكورة أدناه، والتي لها مقابلاتها في ATS: | |
+ | *<code>minimum-tls-version</code> (سلسلة نصية، قيمتها الافتراضية تساوي '<code>TLSv1.2</code>') | ||
+ | *<code>requires-forward-secrecy</code> (قيمة منطقية، قيمتها الافتراضية تساوي '<code>true</code>') | ||
+ | *<code>requires-certificate-transparency</code> (قيمة منطقية، قيمتها الافتراضية تساوي "<code>false</code>"، جديدة في iOS 10) | ||
− | + | === مثال === | |
+ | <syntaxhighlight lang="xml"><access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' ></div></syntaxhighlight>في منصة iOS 10 والإصدارات الموالية، يدعم الوسم <code><access></code> الخاصيات الثلاثة أدناه، وعند إقرانها مع المحرف العام <code>*</code>. فهذه الخاصيات لها أيضا ما يعادلها في ATS: | ||
+ | *<code>allows-arbitrary-loads-for-media</code> (قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10، وفي cordova-ios@4.5.0، مُعدّة لأجل استخدام اسم الخاصية المناسبة). الخاصية القديمة <code>allows-arbitrary-loads-in-media</code> صارت الآن مُتجاوزة. | ||
+ | *<code>allows-arbitrary-loads-in-web-content</code> (قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10) | ||
+ | *<code>allows-local-networking</code> (قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10) | ||
− | + | === مثال === | |
+ | <syntaxhighlight lang="xml"><access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' ></div></syntaxhighlight>راجع صفحة [https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33 ATS] لمزيد من التفاصيل. | ||
− | == | + | == انظر أيضا == |
+ | * صفحة [[Cordova/security|الأمن]] في Cordova. | ||
+ | * صفحة [[Cordova/privacy|الخصوصية]] في Cordova. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==مصادر== | ==مصادر== | ||
*[https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html قسم اللوائح البيضاء في التوثيق الرسمي لكوردوفا.] | *[https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html قسم اللوائح البيضاء في التوثيق الرسمي لكوردوفا.] |
مراجعة 01:40، 20 نوفمبر 2018
لوائح النطاقات البيضاء (Domain whitelisting) هي نموذج أمني يضبط إمكانية الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر Cordova سياسة أمنية قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها.
افتراضيا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء لائحة بيضاء، وتحديد النطاقات (domains) والنطاقات الفرعية (subdomains) المسموح بالوصول إليها.
بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإن السياسة الأمنية لـ Cordova قابلة للتوسيع عبر الإضافات. يجب أن يستخدم تطبيقك الإضافة cordova-plugin-whitelist، لأنها أكثر أمانًا وقابلية للتخصيص مقارنة بالإصدارات السابقة من Cordova. على الرغم من أنه من الممكن تقديم (implement) إضافة خاصة باللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع صفحة cordova-plugin-whitelist لمزيد من التفاصيل حول الاستخدام والإعداد.
بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات W3C Widget Access، التي تعتمد على العنصر <access>
داخل ملف config.xml
الخاص بالتطبيق لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على واجهة سطر الأوامر (CLI)، فهذا الملف موجود في المجلد الأعلى للمشروع. وبالنسبة لمسارات التطوير الخاصة بمنصات معينة، تٌدرج المواقع في الأقسام أدناه.
توضح الأمثلة التالية كيفية صياغة اللوائح البيضاء في العنصر <access>
:
- الوصول إلى google.com:
<access origin="http://google.com" ></div>
- الوصول إلى النطاق الآمن google.com (
https://
):
<access origin="https://google.com" ></div>
- الوصول إلى النطاق الفرعي maps.google.com:
<access origin="http://maps.google.com" ></div>
- الوصول إلى جميع النطاقات الفرعية في google.com، على سبيل المثال mail.google.com و docs.google.com:
<access origin="http://*.google.com" ></div>
- الوصول إلى جميع النطاقات، على سبيل المثال، google.com و https://wiki.hsoub.com:
<access origin="*" ></div>
هذه هي القيمة الافتراضية لمشاريع واجهة سطر الأوامر (CLI) المُنشأة حديثًا.
تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق http://www.google.com
التوجيه نحو https://www.google.com
لأجل استخدام البروتوكول SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل https://www.google.co.uk
. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية أو مُعدلة في اللائحة البيضاء تتجاوز متطلباتك الأولية. يرجى أخذ هذا بعين الاعتبار إبّان بناء قائمتك البيضاء.
لاحظ أن القائمة البيضاء تنطبق فقط على معرض webview
الرئيسي في Cordova، ولا تنطبق على معرض webview
في InAppBrowser
أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.
اللوائح البيضاء في أندرويد
مماثل لما ورد في الأعلى، راجع صفحة cordova-plugin-whitelist لمزيد من التفاصيل.
اللوائح البيضاء في iOS
لا يتطلب الإصدار 4.0 من Cordova-ios
فما فوق تثبيت الإضافة cordova-plugin-whitelist، لكن تنطبق مع ذلك تفاصيل إعدادها على منصة iOS أيضًا.
الوسمان <allow-intent>
و <allow-navigation>
جديدان في الإصدارات cordova-ios 4.x وما بعدها، راجع توئيق cordova-plugin-whitelist لمزيد من التفاصيل حول استخدام هذه الوسوم.
ميزة الخصوصية 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' ></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 لمزيد من التفاصيل.