الفرق بين المراجعتين لصفحة: «Cordova/cordova plugin whitelist»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:إضافة اللائحة البيضاء في كوردوفا}}</noinclude> تصنيف: Cordova تصنيف: Plugin تقدم هذه...'
 
تحديث
 
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:إضافة اللائحة البيضاء في كوردوفا}}</noinclude>
<noinclude>{{DISPLAYTITLE:إضافة اللائحة البيضاء في كوردوفا}}</noinclude>
[[تصنيف: Cordova]]
[[تصنيف: Cordova]]
[[تصنيف: Plugin]]
[[تصنيف: Cordova Plugin]]
تقدم هذه الإضافةُ سياسة اللائحة البيضاء للتنقل عبر [[Cordova/webviews|عارض]] التطبيق على كورودوفا 4.0  
توفر هذه الإضافة (cordova-plugin-whitelist) اللوائح البيضاء التي تحدد كيفية التصفح عبر واجهات وصفحات التطبيق في كورودوفا 4.0.
== التثبيت ==


تنبيه: تقرير عن القضايا على [https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20%22Plugin%20Whitelist%22%20ORDER%20BY%20priority%20DESC%2C%20summary%20ASC%2C%20updatedDate%20DESC Apache Cordova issue tracker]
يمكنك تثبيت إضافة اللائحة البيضاء عبر [[Cordova/cli|واجهة سطر الأوامر]] من مُدير الحُزم npm:  
 
<syntaxhighlight lang="shell">$ cordova plugin add cordova-plugin-whitelist
=== التثبيت ===
 
يمكنك تثبيت إضافة اللائحة البيضاء عبر [[Cordova/cli|واجهة سطر الأوامر]]، من مُدير الحُزم npm:  
<syntaxhighlight lang="javascript">$ cordova plugin add cordova-plugin-whitelist
$ cordova prepare‎</syntaxhighlight>  
$ cordova prepare‎</syntaxhighlight>  


=== منصات كوردوفا المدعومة ===  
== المنصات المدعومة ==  
* أندرويد 4.0.0 أو ما فوقه
* أندرويد 4.0.0 أو ما بعده.
 
=== اللائحة البيضاء للتصفح (Navigation Whitelist) ===


تتحكم هذه اللائحة في العناوين التي يمكن لل[[Cordova/webviews|عارض]] أن يتصفّحها. تنطبق على تصفح المستوى الأعلى (top-level) من المواقع فقط.
== لوائح التصفح البيضاء (Navigation Whitelists) ==


ملاحظات خاصة: على منصة أندرويد، تنطبق اللائحة أيضًا على الإطارات الذكية iframe الخاصة بالخطاطات من غير http ‏(non-http schemes).  
تتحكم هذه اللائحة في العناوين التي يمكن لل[[Cordova/webviews|عارض]] أن يتصفّحها ويعرضها. وتنطبق على تصفح المستوى الأعلى (top-level) من المواقع فقط.  


افتراضيًا، لا يُسمح سوى بتصفح العناوين <code>file://</code> فقط. للسماح بعناوين URL أخرى، عليك إضافة الوسوم <code><allow-navigation></code> إلى الملف <code>config.xml</code>:  
افتراضيًا، لا يُسمح سوى بتصفح العناوين <code>file://</code> فقط. للسماح بالعناوين الأخرى، عليك إضافة الوسوم <code><allow-navigation></code> إلى الملف <code>[[Cordova/config ref|config.xml]]</code>:  
<syntaxhighlight lang="javascript"><!-- Allow links to example.com -->
<syntaxhighlight lang="xml"><!-- example.com إضافة الروابط المُوجّهة إلى الموقع -->
<allow-navigation href="http://example.com/*" />
<allow-navigation href="http://example.com/*" />
<!-- Wildcards are allowed for the protocol, as a prefix
<!-- يُسمح باستخدام الرمز العام "*" في البروتوكول، كبادئة للمُضيف، أو كلاحقة على المسار  -->
    to the host, or as a suffix to the path -->
<allow-navigation href="*://*.example.com/*" />
<allow-navigation href="*://*.example.com/*" />
<!-- A wildcard can be used to whitelist the entire network,
 
    over HTTP and HTTPS.
<!-- يمكن استخدام المحرف العام "*" لإدراج كامل الشبكة في اللائحة البيضاء
    *NOT RECOMMENDED* -->
HTTP و HTTPS مع
*لا يُنصح به* -->
<allow-navigation href="*" />
<allow-navigation href="*" />
<!-- The above is equivalent to these three declarations -->
<!-- ما ورد أعلاه مكافئ للتصريحات الثلاثة التالية -->
<allow-navigation href="http://*/*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />‎</syntaxhighlight>  
<allow-navigation href="data:*" />‎</syntaxhighlight>'''ملاحظات خاصة''': على منصة أندرويد، تنطبق اللائحة أيضًا على الإطارات الذكية <code>iframe</code> الخاصة بالبروتوكولات من غير النوع http ‏(non-http schemes).


=== اللائحة البيضاء للمقاصد (Intent Whitelist) ===  
== اللائحة البيضاء المستهدفة (Intent Whitelist) ==  


تتحكم هذه اللائحة في العناوين التي يُسمح للتطبيق بمطالبة النظام بفتحها. افتراضيًا، لا يُسمح بأي عناوين خارجية.  
تتحكم هذه اللائحة في العناوين التي يُسمَح للتطبيق بمطالبة النظام بفتحها. افتراضيًا، لا يُسمح بأي عناوين خارجية.  


على منصة أندرويد، يكافئ ذلك إرسال مقصد (intent) من النوع BROWSEABLE.
في الملف <code>[[Cordova/config ref|config.xml]]</code>، أضف الوسوم <code><allow-intent></code> التالية: <syntaxhighlight lang="xml"><!-- السماح بفتح الروابط الموجهة إلى المواقع في المتصفح -->
 
لا تٌطبّق اللائحة البيضاء على الإضافات، وإنما تُطبق على الروابط التشعبية واستدعاءات إلى <code>window.open()</code>.
 
في الملف <code>config.xml</code>، أضف الوسوم <code><allow-intent></code> التالية:  
<syntaxhighlight lang="javascript"><!-- Allow links to web pages to open in a browser -->
<allow-intent href="http://*/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="https://*/*" />
<!-- Allow links to example.com to open in a browser -->
<!-- في المتصفح example.com السماح بفتح الروابط الموجهة إلى -->
<allow-intent href="http://example.com/*" />
<allow-intent href="http://example.com/*" />
<!-- Wildcards are allowed for the protocol, as a prefix
<!-- المحرف العام "*" مسموح باستخدامه لأجل البروتوكول، كبادئة للمضيف، أو كلاحقة على المسار -->
    to the host, or as a suffix to the path -->
<allow-intent href="*://*.example.com/*" />
<allow-intent href="*://*.example.com/*" />
<!-- Allow SMS links to open messaging app -->
<!-- messaging app أن تُفتح في تطبيق المراسلة SMS السماح بروابط الرسائل  -->
<allow-intent href="sms:*" />
<allow-intent href="sms:*" />
<!-- Allow tel: links to open the dialer -->
<!-- dialer  في جهاز  tel: السماح بأن تُفتح روابط -->
<allow-intent href="tel:*" />
<allow-intent href="tel:*" />
<!-- Allow geo: links to open maps -->
<!-- Allow geo: links to open maps -->
<!--  في الخرائط  geo: السماح بأن تُفتح روابط -->
<allow-intent href="geo:*" />
<allow-intent href="geo:*" />
<!-- Allow all unrecognized URLs to open installed apps
<!-- السماح بالعناوين غير المعروفة بأن تفتح التطبيقات المثبتة
    *NOT RECOMMENDED* -->
*لا يُنصح به* -->
<allow-intent href="*" />‎</syntaxhighlight>  
<allow-intent href="*" />‎</syntaxhighlight>في حال غياب وسوم <code><allow-intent></code>، لن يُسمح بأي طلبات إلى عناوين URL خارجية. بيد أنّ تطبيق كوردوفا الافتراضي يتضمن مجموعة واسعة من مدخلات <code>allow-intent</code> افتراضيًا. ويُنصح باختيار الإعدادات بناءً على احتياجات كل تطبيق.


=== اللائحة البيضاء لطلبيات الشبكة (Network Request Whitelist) ===
على منصة أندرويد، يكافئ ذلك إرسال مقصد (intent) من النوع <code>BROWSEABLE</code>.


تتحكم هذه اللائحة في طلبيات (requests) الشبكة (الصور، كائنات XHRs، إلخ) المسموح بها (عن طريق خطافات كوردوفا الأصلية).
لا تٌطبّق اللائحة البيضاء على الإضافات، وإنما تُطبق على الروابط التشعبية واستدعاءات التابع <code>window.open()‎</code>.
== اللائحة البيضاء لطلبيات الشبكة (Network Request Whitelist) ==


ملاحظة: نقترح عليك استخدام سياسة أمان المحتوى (انظر أدناه)، والتي هي أكثر أمانًا. هذه اللائحة البيضاء موجّهة في الغالب موجهة للمواقع التي لا تدعم سياسة أمان المحتوى (CSP).  
تحدد هذه اللائحةُ طلبيات (requests) الشبكة (مثل الصور، وكائنات XHRs، ...إلخ) المسموح بها (عن طريق [[Cordova/hooks|خطافات]] كوردوفا الأصلية).  


في الملف <code>config.xml</code>، أضف الوسوم <code><access></code> التالية:  
'''ملاحظة''': نقترح عليك استخدام سياسة أمان المحتوى (انظر أدناه)، والتي هي أكثر أمانًا. فهذه اللائحة البيضاء موجّهة في الغالب للمواقع التي لا تدعم سياسة أمان المحتوى (CSP).
<syntaxhighlight lang="javascript"><!-- Allow images, xhrs, etc. to google.com -->
 
في الملف <code>[[Cordova/config ref|config.xml]]</code>، أضف الوسوم <code><access></code> التالية:  
<syntaxhighlight lang="xml"><!-- google.com وغير ذلك إلى الموقع xhrs إتاحة الصور و  -->
<access origin="http://google.com" />
<access origin="http://google.com" />
<access origin="https://google.com" />
<access origin="https://google.com" />
<!-- Access to the subdomain maps.google.com -->
<!-- maps.google.com الدخول إلى النطاق الفرعي -->
<access origin="http://maps.google.com" />
<access origin="http://maps.google.com" />
<!-- Access to all the subdomains on google.com -->
<!-- google.com الدخول إلى كافة النطاقات الفرعية للموقع -->
<access origin="http://*.google.com" />
<access origin="http://*.google.com" />
<!-- Enable requests to content: URLs -->
<!-- إتاحة طلبيات المحتوى إلى المواقع -->
<access origin="content:///*" />
<access origin="content:///*" />
<!-- Don't block any requests -->
<!-- عدم تعطيل أي طلبية -->
<access origin="*" />‎</syntaxhighlight>  
<access origin="*" />‎</syntaxhighlight>  


إذا لم يُضف أيُّ وسم <code><access></code>، فلن يُسمح إلا لطلبيات عناوين <code>file://</code>. لكنّ التطبيق الافتراضي لكوروفا يتضمّن <code><access origin="*"></code> بشكل افتراضي.  
إذا لم يُضف أيُّ وسم <code><access></code> إلى الملف <code>[[Cordova/config ref|config.xml]]</code>، فلن يُسمح إلا بالطلبيات الموجهة لعناوين <code>file://</code>. إلا أنّ التطبيق الافتراضي لكوردوفا يتضمّن الوسم ‎<code><access origin="*"></code> بشكل افتراضي.  


ملاحظة: لا يمكن لللائحة البيضاء حظر عمليات إعادة التوجيه من موقع بعيد (أي http أو https) مُدرجٍ في اللائحة البيضاء إلى موقع غير مدرج في اللائحة البيضاء. استخدم قواعد سياسة أمان المحتوى (CSP) للتقليل من عمليات إعادة التوجيه إلى المواقع غير المدرجة في اللائحة البيضاء لل[[Cordova/webviews|عوارض]] التي تدعم سياسة أمان المحتوى.  
'''ملاحظة''': لا يمكن للائحة البيضاء حظر عمليات إعادة التوجيه من موقع بعيد (أي http أو https) مُدرجٍ في اللائحة البيضاء إلى موقع غير مدرج فيها. استخدم قواعد سياسة أمان المحتوى (CSP) للتقليل من عمليات إعادة التوجيه إلى المواقع غير المدرجة في اللائحة البيضاء في [[Cordova/webviews|العارض]] الذي يدعم سياسة أمان المحتوى.  


ملاحظات خاصة: يسمح أندرويد أيضًا الطلبيات المُوجّهة إلى الموقع https://ssl.gstatic.com/accessibility/javascript/android/ بشكل افتراضي، نظرًا لأنّه هذا الموقع ضروري لكي يشتغل تطبيق TalkBack بالشكل الصحيح.  
'''ملاحظات خاصة''': تسمح منصة أندرويد أيضًا بالطلبيات المُوجّهة إلى [https://ssl.gstatic.com/accessibility/javascript/android/ هذا الموقع] افتراضيا، نظرًا لكون هذا الموقع ضروريًا لتطبيق TalkBack ليعمل بصورة صحيحة.  
==== سياسة أمن المحتوى ====  
=== سياسة أمن المحتوى (Content Security Policy) ===  


تحدد طلبيات الشبكة (الصور، كائنات XHRs، إلخ) المسموح بها (عبر [[Cordova/webviews|العارض]] مباشرة).  
تحدد سياسةُ أمن المحتوى طلبياتِ الشبكة (الصور، وكائنات XHRs، ...إلخ) المسموح بها (عبر [[Cordova/webviews|العارض]] مباشرةً).  


على منصتي أندرويد و iOS، لا يمكن لللائحة البيضاء لطلبيات الشبكة (انظر أعلاه) تصفية جميع أنواع الطلبيات (على سبيل المثال، لا يتم حظر <code><video></code> & WebSockets). لذا، فبالإضافة إلى اللائحة البيضاء، يجب عليك استخدام وسم [http://content-security-policy.com/ Content Security Policy] <code><meta></code> في جميع صفحاتك.  
في منصتي أندرويد و iOS، لا يمكن للائحة البيضاء لطلبيات الشبكة (network request whitelist) تصفية جميع أنواع الطلبيات (على سبيل المثال، لا يتم حظر <code><video></code> و WebSockets). لذلك، فبالإضافة إلى اللائحة البيضاء، يجب عليك استخدام وسم [http://content-security-policy.com/ سياسة أمن المحتوى] <code><meta></code> ‎في جميع صفحاتك.  


على أندرويد، يبدأ دعم CSP ضمن [[Cordova/webviews|العارض]] النظامي مع إصدار KitKat (ولكنه متاح في جميع الإصدارات باستخدام الإضافة Crosswalk WebView).  
في منصة أندرويد، بدأ دعم سياسةُ أمن المحتوى ضمن [[Cordova/webviews|العارض]] النظامي (system webview) مع الإصدار KitKat (ولكنه متاح في جميع الإصدارات عبر الإضافة [https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview Crosswalk WebView]).  


فيما يلي بعض الأمثلة عن إعلانات سياسة أمان المحتوى (CSP) لصفحات <code>.html</code> الخاصة بك:  
فيما يلي بعض الأمثلة عن إعلانات سياسة أمان المحتوى (CSP) لصفحات <code>.html</code>:  
<syntaxhighlight lang="javascript"><!-- Good default declaration:
<syntaxhighlight lang="html"><!-- :تصريحات افتراضية مهمة
     * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
     * gap: وهو مطلوب في ،UIWebView عنداستخدام iOS ليس مطلوبا إلا في منصة
     * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
            ملفات جافاسكريبت الأصلية للتواصل
     * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
     * مطلوب فقط في منصة أندرويد، وهو ضروري لكي يعمل https://ssl.gstatic.com
         * Enable inline JS: add 'unsafe-inline' to default-src
    * بشكل صحيح TalkBack التطبيق
        * Enable eval(): add 'unsafe-eval' to default-src
     * :لتغيير هذا ،XSS  والنصوص البرمجية المُضمّنة لسد ثغرات eval() عطّل الدالة   
         * default-src إلى 'unsafe-inline' أتح ملفات جافاسكريبت المضمّنة: أضف
        *  default-src إلى 'unsafe-inline' أضف :eval() أتح الدالة
-->
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">
<!-- Allow everything but only from the same origin and foo.com -->
<!-- foo.com أتِح كل شيء يأتي من نفس المصدر ومن الموقع -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">
<!-- This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that
<!-- وغير ذلك CSS, AJAX, object, frame, media تسمح هذه السياسة بكل شي،مثل
     * CSS only from the same origin and inline styles,
: باستثناء ما يلي
     * scripts only from the same origin and inline styles, and eval()
     * من نفس المصدر والتنسيقات المُضمّنة CSS ملفات
     * eval() النصوص البرمجية من نفس المصدر والتنسيقات المُضمّنة والدالة
-->
-->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<!-- Allows XHRs only over HTTPS on the same domain. -->
<!-- من نفس النطاق HTTPS بدل XHRs السماح بالبروتوكول-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">
<!-- Allow iframe to https://cordova.apache.org/ -->
<!-- https://cordova.apache.org/ إتاحة الإطارات الذكية للموقع -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">‎</syntaxhighlight>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">‎</syntaxhighlight>
== انظر أيضًا ==
* إضافة [[Cordova/cordova plugin file|الملفات]]
* [[Cordova/whitelist|اللوائح البيضاء]]
* [[Cordova/security|إدارة الأمن]]
* [[Cordova/privacy|إدارة الخصوصية]]
* [[Cordova/plugins|دليل تطوير الإضافات في كوردوفا]]
==مصادر==
==مصادر==
*[https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/index.html صفحة cordova-plugin-whitelist في توثيق كوردوفا الرسمي.]
*[https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/index.html صفحة cordova-plugin-whitelist في توثيق كوردوفا الرسمي.]

المراجعة الحالية بتاريخ 11:09، 4 ديسمبر 2020

توفر هذه الإضافة (cordova-plugin-whitelist) اللوائح البيضاء التي تحدد كيفية التصفح عبر واجهات وصفحات التطبيق في كورودوفا 4.0.

التثبيت

يمكنك تثبيت إضافة اللائحة البيضاء عبر واجهة سطر الأوامر من مُدير الحُزم npm:

$ cordova plugin add cordova-plugin-whitelist
$ cordova prepare‎

المنصات المدعومة

  • أندرويد 4.0.0 أو ما بعده.

لوائح التصفح البيضاء (Navigation Whitelists)

تتحكم هذه اللائحة في العناوين التي يمكن للعارض أن يتصفّحها ويعرضها. وتنطبق على تصفح المستوى الأعلى (top-level) من المواقع فقط.

افتراضيًا، لا يُسمح سوى بتصفح العناوين file://‎ فقط. للسماح بالعناوين الأخرى، عليك إضافة الوسوم <allow-navigation> إلى الملف config.xml:

<!-- example.com إضافة الروابط المُوجّهة إلى الموقع -->
<allow-navigation href="http://example.com/*" />
<!-- يُسمح باستخدام الرمز العام "*" في البروتوكول، كبادئة للمُضيف، أو كلاحقة على المسار  -->
<allow-navigation href="*://*.example.com/*" />

<!-- يمكن استخدام المحرف العام "*" لإدراج كامل الشبكة في اللائحة البيضاء
 HTTP و HTTPS مع
 *لا يُنصح به*  -->
<allow-navigation href="*" />
<!-- ما ورد أعلاه مكافئ للتصريحات الثلاثة التالية -->
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />

ملاحظات خاصة: على منصة أندرويد، تنطبق اللائحة أيضًا على الإطارات الذكية iframe الخاصة بالبروتوكولات من غير النوع http ‏(non-http schemes).

اللائحة البيضاء المستهدفة (Intent Whitelist)

تتحكم هذه اللائحة في العناوين التي يُسمَح للتطبيق بمطالبة النظام بفتحها. افتراضيًا، لا يُسمح بأي عناوين خارجية.

في الملف config.xml، أضف الوسوم <allow-intent> التالية:

<!--  السماح بفتح الروابط الموجهة إلى المواقع في المتصفح -->
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<!-- في المتصفح example.com السماح بفتح الروابط الموجهة إلى -->
<allow-intent href="http://example.com/*" />
<!-- المحرف العام "*" مسموح باستخدامه لأجل البروتوكول، كبادئة للمضيف، أو كلاحقة على المسار -->
<allow-intent href="*://*.example.com/*" />
<!-- messaging app أن تُفتح في تطبيق المراسلة SMS السماح بروابط الرسائل  -->
<allow-intent href="sms:*" />
<!--  dialer  في جهاز  tel: السماح بأن تُفتح روابط -->
<allow-intent href="tel:*" />
<!-- Allow geo: links to open maps -->
<!--  في الخرائط  geo: السماح بأن تُفتح روابط -->
<allow-intent href="geo:*" />
<!-- السماح بالعناوين غير المعروفة بأن تفتح التطبيقات المثبتة
 *لا يُنصح به*  -->
<allow-intent href="*" />

في حال غياب وسوم <allow-intent>، لن يُسمح بأي طلبات إلى عناوين URL خارجية. بيد أنّ تطبيق كوردوفا الافتراضي يتضمن مجموعة واسعة من مدخلات allow-intent افتراضيًا. ويُنصح باختيار الإعدادات بناءً على احتياجات كل تطبيق.

على منصة أندرويد، يكافئ ذلك إرسال مقصد (intent) من النوع BROWSEABLE.

لا تٌطبّق اللائحة البيضاء على الإضافات، وإنما تُطبق على الروابط التشعبية واستدعاءات التابع window.open()‎.

اللائحة البيضاء لطلبيات الشبكة (Network Request Whitelist)

تحدد هذه اللائحةُ طلبيات (requests) الشبكة (مثل الصور، وكائنات XHRs، ...إلخ) المسموح بها (عن طريق خطافات كوردوفا الأصلية).

ملاحظة: نقترح عليك استخدام سياسة أمان المحتوى (انظر أدناه)، والتي هي أكثر أمانًا. فهذه اللائحة البيضاء موجّهة في الغالب للمواقع التي لا تدعم سياسة أمان المحتوى (CSP).

في الملف config.xml، أضف الوسوم <access> التالية:

<!--  google.com وغير ذلك إلى الموقع xhrs إتاحة الصور و  -->
<access origin="http://google.com" />
<access origin="https://google.com" />
<!--  maps.google.com الدخول إلى النطاق الفرعي -->
<access origin="http://maps.google.com" />
<!-- google.com الدخول إلى كافة النطاقات الفرعية للموقع -->
<access origin="http://*.google.com" />
<!-- إتاحة طلبيات المحتوى إلى المواقع -->
<access origin="content:///*" />
<!-- عدم تعطيل أي طلبية -->
<access origin="*" />

إذا لم يُضف أيُّ وسم <access> إلى الملف config.xml، فلن يُسمح إلا بالطلبيات الموجهة لعناوين file://‎. إلا أنّ التطبيق الافتراضي لكوردوفا يتضمّن الوسم ‎<access origin="*">‎ بشكل افتراضي.

ملاحظة: لا يمكن للائحة البيضاء حظر عمليات إعادة التوجيه من موقع بعيد (أي http أو https) مُدرجٍ في اللائحة البيضاء إلى موقع غير مدرج فيها. استخدم قواعد سياسة أمان المحتوى (CSP) للتقليل من عمليات إعادة التوجيه إلى المواقع غير المدرجة في اللائحة البيضاء في العارض الذي يدعم سياسة أمان المحتوى.

ملاحظات خاصة: تسمح منصة أندرويد أيضًا بالطلبيات المُوجّهة إلى هذا الموقع افتراضيا، نظرًا لكون هذا الموقع ضروريًا لتطبيق TalkBack ليعمل بصورة صحيحة.

سياسة أمن المحتوى (Content Security Policy)

تحدد سياسةُ أمن المحتوى طلبياتِ الشبكة (الصور، وكائنات XHRs، ...إلخ) المسموح بها (عبر العارض مباشرةً).

في منصتي أندرويد و iOS، لا يمكن للائحة البيضاء لطلبيات الشبكة (network request whitelist) تصفية جميع أنواع الطلبيات (على سبيل المثال، لا يتم حظر ‎<video>‎ و WebSockets). لذلك، فبالإضافة إلى اللائحة البيضاء، يجب عليك استخدام وسم سياسة أمن المحتوى<meta> ‎في جميع صفحاتك.

في منصة أندرويد، بدأ دعم سياسةُ أمن المحتوى ضمن العارض النظامي (system webview) مع الإصدار KitKat (ولكنه متاح في جميع الإصدارات عبر الإضافة Crosswalk WebView).

فيما يلي بعض الأمثلة عن إعلانات سياسة أمان المحتوى (CSP) لصفحات ‎.html:

<!-- :تصريحات افتراضية مهمة
    * gap: وهو مطلوب في ،UIWebView عنداستخدام iOS  ليس مطلوبا إلا في منصة
            ملفات جافاسكريبت الأصلية للتواصل
    *  مطلوب فقط في منصة أندرويد، وهو ضروري لكي يعمل https://ssl.gstatic.com
    * بشكل صحيح TalkBack التطبيق
    * :لتغيير هذا ،XSS  والنصوص البرمجية المُضمّنة لسد ثغرات eval() عطّل الدالة     
        * default-src إلى 'unsafe-inline' أتح ملفات جافاسكريبت المضمّنة: أضف 
        *  default-src إلى 'unsafe-inline' أضف :eval() أتح الدالة
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">
<!-- foo.com أتِح كل شيء يأتي من نفس المصدر ومن الموقع -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">
<!-- وغير ذلك CSS, AJAX, object, frame, media تسمح هذه السياسة بكل شي،مثل 
: باستثناء ما يلي
    * من نفس المصدر والتنسيقات المُضمّنة CSS ملفات
    * eval() النصوص البرمجية من نفس المصدر والتنسيقات المُضمّنة والدالة
-->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<!-- من نفس النطاق HTTPS بدل XHRs السماح بالبروتوكول-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">
<!--  https://cordova.apache.org/ إتاحة الإطارات الذكية للموقع -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">

انظر أيضًا

مصادر