تعرَّف على مزيد من المعلومات حول الرؤوس التي يمكنها الحفاظ على أمان موقعك الإلكتروني والبحث بسرعة عن أهم التفاصيل.
تسرد هذه المقالة أهم رؤوس الأمان التي يمكنك استخدامها لحماية موقعك الإلكتروني. وبإمكانك استخدامها لفهم ميزات الأمان المستنِدة إلى الويب وكيفية تنفيذها في موقعك الإلكتروني وكمرجع عند الحاجة إلى تذكير.
- عناوين الأمان المُقترَحة للمواقع الإلكترونية التي تعالج بيانات المستخدمين الحساسة:
- سياسة أمان المحتوى (CSP)
- الأنواع الموثوق بها
- يُنصح باستخدام عناوين الأمان لجميع المواقع الإلكترونية:
- X-Content-Type-Options
- خيارات الإطار X
- سياسة الموارد المتعدّدة المصادر (CORP)
- سياسة فتح التطبيقات المتعدّدة المصادر (COOP)
- الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS)
- عناوين الأمان للمواقع الإلكترونية ذات الإمكانيات المتقدّمة:
- مشاركة الموارد المتعدّدة المصادر (CORS)
- سياسة أداة تضمين الموارد المتعدّدة المصادر (COEP)
قبل التعمق في عناوين الأمان، تعرَّف على التهديدات المعروفة على الويب والسبب الذي من أجله قد تحتاج إلى استخدام رؤوس الأمان هذه.
حماية موقعك من ثغرات الحقن
تظهر ثغرات الحقن عندما يمكن أن تؤثر البيانات غير الموثوق بها التي يعالجها التطبيق في سلوكه، وتؤدي عادةً إلى تنفيذ نصوص برمجية يتحكّم فيها المهاجم. إنّ أكثر الثغرات الأمنية شيوعًا التي تنتج عن أخطاء الحقن هي النصوص البرمجية على المواقع الإلكترونية (XSS) بأشكالها المختلفة، بما في ذلك انعكاسات XSS وXSS المخزن وXSS المستنِد إلى نموذج كائن المستند (DOM) وغير ذلك.
عادةً ما تمنح الثغرة الأمنية XSS المهاجم وصولاً كاملاً إلى بيانات المستخدم التي يعالجها التطبيق وأي معلومات أخرى يستضيفها أصل الويب نفسه.
تشمل إجراءات الدفاع التقليدية ضد الحقن الاستخدام المتسق لأنظمة نماذج HTML الاستغناء عن المحتوى تلقائيًا، وتجنُّب استخدام واجهات برمجة تطبيقات JavaScript الخطيرة، ومعالجة بيانات المستخدمين بشكل سليم من خلال استضافة عمليات تحميل الملفات في نطاق منفصل وتنقيح ترميز HTML الذي يتحكّم فيه المستخدم.
- استخدِم سياسة أمان المحتوى (CSP) للتحكّم في النصوص البرمجية التي يمكن للتطبيق تنفيذها للحدّ من خطر عمليات الحقن.
- استخدِم الأنواع الموثوق بها لفرض تنظيف البيانات التي يتم تمريرها إلى واجهات برمجة تطبيقات JavaScript الخطيرة.
- استخدِم X-Content-Type-Options لمنع المتصفّح من إساءة تفسير أنواع MIME لموارد موقعك الإلكتروني، ما قد يؤدي إلى تنفيذ النص البرمجي.
عزل الموقع عن المواقع الإلكترونية الأخرى
يسمح انفتاح الويب للمواقع الإلكترونية بالتفاعل مع بعضها البعض بطرق قد تنتهك التوقعات الأمنية لأحد التطبيقات. ويشمل ذلك إجراء طلبات تمت مصادقتها بشكل غير متوقع أو تضمين بيانات من تطبيق آخر في مستند المهاجم، ما يسمح للمهاجم بتعديل بيانات التطبيق أو قراءتها.
تشمل الثغرات الشائعة التي تُضعف عزل الويب تمويه النقر وتزوير الطلبات من مواقع إلكترونية مختلفة (CSRF) وتضمين النصوص البرمجية من مواقع إلكترونية مختلفة (XSSI) وعمليات تسرّب متعددة على مواقع إلكترونية متعددة.
- استخدِم X-Frame-Options لمنع تضمين المستندات من موقع إلكتروني ضار.
- استخدِم سياسة الموارد المتعدّدة المصادر (CORP) لمنع تضمين موارد موقعك الإلكتروني في موقع إلكتروني من مصادر متعددة.
- استخدِم سياسة فتح المحتوى من عدة مصادر (COOP) لحماية نوافذ موقعك الإلكتروني من تفاعلات المواقع الإلكترونية الضارّة.
- يمكنك استخدام ميزة مشاركة الموارد المتعدّدة المصادر (CORS) للتحكّم في الوصول إلى موارد موقعك الإلكتروني من المستندات المشتركة المصدر.
ننصحك بقراءة مقالة Post-Spectre Web Development إذا كنت مهتمًا بهذه العناوين.
إنشاء موقع إلكتروني قوي بأمان
يضع Spectre أي بيانات تم تحميلها
في مجموعة سياق التصفّح نفسها التي يُحتمل أن تكون قابلة للقراءة،
على الرغم من سياسة المصدر نفسه. وتحظر المتصفّحات ميزات
من المحتمل أن تستغل الثغرة الأمنية وراء بيئة خاصة تُعرف باسم "العزل المشترك المصدر". من خلال حظر الوصول من نطاقات أخرى، يمكنك
استخدام ميزات فعّالة مثل SharedArrayBuffer
.
- يمكنك استخدام سياسة أداة تضمين مصادر متعددة (COEP) مع COOP لتفعيل ميزة العزل المشترك المصدر.
تشفير الزيارات الواردة إلى موقعك الإلكتروني
تظهر مشاكل التشفير عندما لا يشفِّر التطبيق البيانات بالكامل أثناء نقلها، ما يسمح للمهاجمين بالتجسس لمعرفة المزيد من المعلومات عن تفاعلات المستخدم مع التطبيق.
يمكن أن ينشأ تشفير غير كافٍ في الحالات التالية: عدم استخدام HTTPS
أو المحتوى المختلَط أو ضبط ملفات تعريف ارتباط بدون سمة
Secure
(أو __Secure
بادئة)
أو منطق تحقُّق
CORS غير المرن.
- يمكنك استخدام سياسة الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS) لعرض المحتوى بشكل متّسق من خلال بروتوكول HTTPS.
سياسة أمان المحتوى (CSP)
هجوم النص البرمجي عبر المواقع الإلكترونية (XSS) هو هجوم تشنّه ثغرة على أحد المواقع الإلكترونية تتيح إدخال نص برمجي ضار وتنفيذه.
يوفر Content-Security-Policy
طبقة إضافية للتخفيف من هجمات XSS عن طريق
تقييد النصوص البرمجية التي يمكن تنفيذها من الصفحة.
ننصحك بتفعيل سياسة CSP صارمة باستخدام أحد الأساليب التالية:
- في حال عرض صفحات HTML على الخادم، استخدِم سياسة CSP صارمة غير قائمة على أساس غير.
- إذا كان يجب عرض HTML بشكل ثابت أو مخزَّن مؤقتًا، على سبيل المثال، إذا كان تطبيقًا من صفحة واحدة، استخدِم سياسة CSP صارمة مستندة إلى التجزئة.
مثال على الاستخدام: سياسة أمان محتوى (CSP) مستندة إلى عدم التأسيس
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
الاستخدامات المقترَحة
1- استخدام سياسة CSP صارمة مستندة إلى nonce {: #nonce-based-csp}
في حال عرض صفحات HTML على الخادم، استخدِم سياسة CSP صارمة غير قائمة على أساس غير.
يمكنك إنشاء قيمة nonce الجديدة للنص البرمجي لكل طلب من جهة الخادم وضبط العنوان التالي:
ملف إعداد الخادم
Content-Security-Policy: script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
في HTML، لتحميل النصوص البرمجية، يجب ضبط السمة nonce
لجميع علامات <script>
على سلسلة {RANDOM1}
نفسها.
index.html
<script nonce="{RANDOM1}" src="https://example.com/script1.js"></script> <script nonce="{RANDOM1}"> // Inline scripts can be used with the <code>nonce</code> attribute. </script>
يُعدّ صور Google مثالاً جيدًا وصارمًا على سياسة CSP يستند إلى معايير صارمة. يمكنك استخدام "أدوات مطوري البرامج" لمعرفة كيفية استخدامها.
2- استخدام سياسة CSP صارمة مستندة إلى التجزئة {: #hash-based-csp}
إذا كان يجب عرض HTML بشكل ثابت أو مخزَّن مؤقتًا، على سبيل المثال، عند إنشاء تطبيق من صفحة واحدة، استخدِم سياسة CSP صارمة مستندة إلى التجزئة.
ملف إعداد الخادم
Content-Security-Policy: script-src 'sha256-{HASH1}' 'sha256-{HASH2}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
في HTML، ستحتاج إلى تضمين النصوص البرمجية لتطبيق سياسة مستندة إلى التجزئة، لأنّ معظم المتصفحات لا تتيح تجزئة النصوص البرمجية الخارجية.
index.html
<script> ...// your script1, inlined </script> <script> ...// your script2, inlined </script>
لتحميل نصوص برمجية خارجية، اقرأ "تحميل النصوص البرمجية المصدر ديناميكيًا" ضمن قسم الخيار ب: عنوان استجابة CSP المستند إلى التجزئة.
مقيّم CSP هو أداة جيدة لتقييم سياسة CSP، ولكنه في الوقت نفسه مثال جيد على سياسة CSP يستند إلى معايير صارمة. يمكنك استخدام "أدوات مطوري البرامج" لمعرفة كيفية استخدامها.
المتصفحات المعتمدة
أمور أخرى يجب مراعاتها حول سياسة أمان المحتوى (CSP)
frame-ancestors
يحمي موقعك الإلكتروني من الاستيلاء على النقرات، وهو خطر ينشأ في حال السماح للمواقع الإلكترونية غير الموثوق بها بتضمين موقعك الإلكتروني. إذا كنت تفضّل حلاً أبسط، يمكنك استخدامX-Frame-Options
لحظر التحميل، إلا أنّframe-ancestors
يتيح لك إعدادًا متقدّمًا للسماح بإدراج مصادر معيّنة فقط كأدوات تضمين.- ربما تكون قد استخدمت سياسة CSP لضمان تحميل جميع موارد موقعك الإلكتروني عبر HTTPS. أصبح ذلك أقل صلة: في الوقت الحالي، تحظر معظم المتصفحات المحتوى المختلَط.
- يمكنك أيضًا ضبط سياسة أمان محتوى (CSP) في وضع إعداد التقارير فقط.
- إذا لم تتمكن من ضبط سياسة أمان المحتوى (CSP) كخادم عناوين، يمكنك أيضًا ضبطها كعلامة وصفية. يُرجى العلم أنّه لا يمكنك استخدام وضع إعداد التقارير فقط للعلامات الوصفية (على الرغم من أنّ هذا قد يتغيّر).
مزيد من المعلومات
الأنواع الموثوق بها
بروتوكول XSS المستنِد إلى نموذج كائن المستند (DOM) هو هجوم يتم من خلاله نقل بيانات ضارة إلى حوض يتيح تنفيذ الرموز الديناميكية مثل eval()
أو .innerHTML
.
توفر الأنواع الموثوق بها الأدوات اللازمة لكتابة التطبيقات، ومراجعة الأمان لها، وصيانتها بدون أن تتضمن DOM XSS. ويمكن تفعيلها من خلال CSP وجعل رمز JavaScript آمنًا تلقائيًا من خلال تقييد واجهات برمجة تطبيقات الويب الخطيرة بحيث لا تقبل سوى كائن خاص، وهو نوع موثوق به.
لإنشاء هذه العناصر، يمكنك تحديد سياسات الأمان التي يمكنك من خلالها التأكد من تطبيق قواعد الأمان (مثل الخروج أو التعقيم) بشكل متسق قبل كتابة البيانات في DOM. وتكون هذه السياسات حينها هي الأماكن الوحيدة في التعليمات البرمجية التي من المحتمل أن تقدم DOM XSS.
أمثلة على الاستخدامات
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.
// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
el.innerHTML = escaped; // '&lt;img src=x onerror=alert(1)&gt;'
الاستخدامات المقترَحة
-
فرض "الأنواع الموثوق بها" لأحواض DOM الخطيرة عنوان "CSP" و" Trusted Types":
Content-Security-Policy: require-trusted-types-for 'script'
تمثّل القيمة
'script'
في الوقت الحالي القيمة الوحيدة المقبولة لتوجيهrequire-trusted-types-for
.وبالطبع، يمكنك دمج الأنواع الموثوق بها مع توجيهات CSP الأخرى:
دمج سياسة أمان محتوى (CSP) غير مستندة إلى معايير أعلى مع الأنواع الموثوق بها:
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
require-trusted-types-for 'script';
<aside class="note"><b>ملاحظة: </b> يمكنك تحديد أسماء سياسات "الأنواع الموثوق بها" المسموح بها من خلال ضبط توجيه <code>trusted-types</code> إضافي (مثل <code>trusted-types myPolicy</code>). إلا أنّ هذا ليس مطلبًا. </aside>
-
تحديد سياسة
السياسة:
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\/g, '>');
}
});
}
-
تطبيق السياسة
استخدِم السياسة عند كتابة البيانات في نموذج العناصر في المستند (DOM):
// Assignment of raw strings are blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.</p>
<p>// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src="x" onerror="alert(1)">');
el.innerHTML = escaped; // '<img src=x onerror=alert(1)>'
في السمة require-trusted-types-for 'script'
، يجب استخدام نوع موثوق به. سيؤدي استخدام أي واجهة برمجة تطبيقات DOM API خطيرة مع سلسلة إلى حدوث
خطأ.
المتصفحات المعتمدة
مزيد من المعلومات
- منع الثغرات الأمنية في النصوص البرمجية للمواقع الإلكترونية المتعددة المستندة إلى نموذج العناصر في المستند (DOM) باستخدام "الأنواع الموثوق بها"
- CSP: request-trusted-types-for - HTTP |
MDN
- CSP: أنواع موثوق بها - HTTP |
MDN
- العرض التوضيحي للأنواع الموثوق بها: يمكنك فتح أداة "أداة فحص أدوات مطوّري البرامج" والاطّلاع على
ما يحدث.
X-Content-Type-Options
عند عرض مستند HTML ضار من نطاقك (على سبيل المثال، في حال احتواء صورة تم تحميلها إلى خدمة صور على ترميز HTML صالح)، ستتعامل معه بعض المتصفحات كمستند نشط وتسمح له بتنفيذ نصوص برمجية في سياق التطبيق، ما يؤدي إلى حدوث خطأ في النصوص البرمجية للمواقع الإلكترونية المتعددة.
تمنع علامة X-Content-Type-Options: nosniff
ذلك من خلال إعلام المتصفّح بأنّ نوع MIME الذي تم ضبطه في عنوان Content-Type
لاستجابة معيّنة صحيح. يُنصح باستخدام هذا العنوان لجميع مواردك.
مثال على الاستخدام
X-Content-Type-Options: nosniff
الاستخدامات المقترَحة
يُنصح باستخدام السمة X-Content-Type-Options: nosniff
لجميع الموارد التي يتم عرضها من
الخادم بالإضافة إلى عنوان Content-Type
الصحيح.
أمثلة على العناوين التي تم إرسالها باستخدام رمز HTML للمستند
X-Content-Type-Options: nosniff Content-Type: text/html; charset=utf-8
المتصفحات المعتمدة
مزيد من المعلومات
خيارات الإطار X
إذا كان بإمكان أحد المواقع الإلكترونية الضارّة تضمين موقعك الإلكتروني في إطار iframe، قد يسمح ذلك للمهاجمين باستدعاء إجراءات غير مقصودة من جانب المستخدم من خلال تمويه النقر. بالإضافة إلى ذلك، تمنح هجمات Spectre-type المواقع الإلكترونية الضارة فرصة للتعرف على محتويات مستند مضمّن.
تشير السمة X-Frame-Options
إلى ما إذا كان يجب السماح للمتصفح بعرض صفحة في <frame>
أو <iframe>
أو <embed>
أو <object>
. ننصحك بجميع المستندات
إرسال هذا العنوان للإشارة إلى ما إذا كان يسمح بتضمينها
في مستندات أخرى.
مثال على الاستخدام
X-Frame-Options: DENY
الاستخدامات المقترَحة
ويجب استخدام العنوان X-Frame-Options
في جميع المستندات التي لم يتم تصميمها لتضمينها.
يمكنك تجربة كيفية تأثير الإعدادات التالية في تحميل إطار iframe في هذا
العرض التوضيحي. غيِّر القائمة المنسدلة X-Frame-Options
وانقر على الزر إعادة تحميل إطار iframe.
حماية موقعك الإلكتروني من أن يتم تضمينه في أي مواقع إلكترونية أخرى
يتم رفض تضمينه في أي مستندات أخرى.
X-Frame-Options: DENY
حماية موقعك الإلكتروني من تضمينه في أي مواقع إلكترونية متعددة المصادر
السماح بتضمين المستندات من المصدر نفسه فقط
X-Frame-Options: SAMEORIGIN
المتصفحات المعتمدة
مزيد من المعلومات
سياسة الموارد المتعدّدة المصادر (CORP)
يمكن للمهاجم تضمين موارد من مصدر آخر، من موقعك على سبيل المثال، للحصول على معلومات حولها من خلال استغلال التسريبات المستنِدة إلى الويب بين المواقع الإلكترونية.
يخفف Cross-Origin-Resource-Policy
من هذه المخاطر من خلال الإشارة إلى مجموعة
المواقع الإلكترونية التي يمكن التحميل من خلالها. ويكون العنوان واحدة من ثلاث قيم:
same-origin
وsame-site
وcross-origin
. ننصح بجميع الموارد بإرسال هذا العنوان للإشارة إلى ما إذا كانت تسمح بتحميل البيانات من خلال مواقع إلكترونية أخرى.
مثال على الاستخدام
Cross-Origin-Resource-Policy: same-origin
الاستخدامات المقترَحة
ويُنصح بعرض جميع الموارد باستخدام أحد العناوين الثلاثة التالية.
يمكنك تجربة كيفية تأثير الإعدادات التالية في تحميل الموارد ضمن بيئة Cross-Origin-Embedder-Policy: require-corp
في هذا
العرض التوضيحي. غيِّر القائمة المنسدلة Cross-Origin-Resource-Policy وانقر على الزر إعادة تحميل إطار iframe أو إعادة تحميل الصورة لرؤية التأثير.
السماح بتحميل الموارد cross-origin
ننصح بأن تطبّق الخدمات المشابهة لشبكة توصيل المحتوى cross-origin
على الموارد (لأنّها يتم تحميلها عادةً من خلال صفحات متعددة المصادر)، ما لم يتم عرضها من خلال CORS، ما يؤدي إلى تأثير مشابه.
Cross-Origin-Resource-Policy: cross-origin
الحدّ من الموارد التي سيتم تحميلها من "same-origin
"
يجب تطبيق السمة same-origin
على الموارد التي يُفترض أن يتم تحميلها
من خلال الصفحات من المصدر نفسه فقط. وعليك تطبيق ذلك على الموارد التي تتضمّن معلومات
حساسة حول المستخدم أو استجابات من واجهة برمجة تطبيقات الغرض منها طلبها
من المصدر نفسه فقط.
يُرجى العِلم أنّه لا يزال من الممكن تحميل الموارد التي تحتوي على هذا العنوان مباشرةً، مثلاً من خلال الانتقال إلى عنوان URL في نافذة متصفّح جديدة. تعمل "سياسة الموارد المتعدّدة المصادر" على حماية المورد فقط من تضمينه في مواقع إلكترونية أخرى.
Cross-Origin-Resource-Policy: same-origin
الحدّ من الموارد التي سيتم تحميلها من "same-site
"
ننصحك بتطبيق علامة same-site
على الموارد المشابهة لتلك الواردة أعلاه،
ولكن يُقصد منها أن يتم تحميلها من خلال نطاقات فرعية أخرى في موقعك الإلكتروني.
Cross-Origin-Resource-Policy: same-site
المتصفحات المعتمدة
مزيد من المعلومات
سياسة إتاحة التشغيل من مصادر متعددة (COOP)
يمكن للموقع الإلكتروني للمهاجم فتح موقع آخر في نافذة منبثقة لمعرفة معلومات حوله من خلال استغلال التسريبات المستنِدة إلى الويب بين المواقع الإلكترونية. وفي بعض الحالات، قد يسمح هذا الإجراء أيضًا باستغلال هجمات القنوات الجانبية المستندة إلى Spectre.
يوفّر عنوان Cross-Origin-Opener-Policy
طريقة للمستند لعزل نفسه عن النوافذ المتعددة المصادر المفتوحة من خلال window.open()
أو رابط مع target="_blank"
بدون rel="noopener"
. نتيجة لذلك، لن يكون لأي مستخدم مفتوح المصدر للمستند أي إشارة إليه ولن يتمكن من التفاعل معه.
مثال على الاستخدام
Cross-Origin-Opener-Policy: same-origin-allow-popups
الاستخدامات المقترَحة
يمكنك تجربة كيفية تأثير الإعدادات التالية في التواصل من خلال نافذة منبثقة من مصادر متعددة في هذا العرض التوضيحي. غيِّر القائمة المنسدلة Cross-Origin-Opener-Policy لكل من المستند والنافذة المنبثقة، وانقر على الزر فتح نافذة منبثقة، ثم انقر على إرسال رسالة postMessage لمعرفة ما إذا تم تسليم الرسالة أم لا.
عزل مستند عن النوافذ المشتركة المصدر
يؤدي ضبط same-origin
إلى عزل المستند عن نوافذ المستندات المشتركة المصدر.
Cross-Origin-Opener-Policy: same-origin
عزل المستند عن النوافذ المشتركة المصدر مع السماح بالنوافذ المنبثقة
يؤدي ضبط same-origin-allow-popups
إلى السماح للمستند بالاحتفاظ بمرجع في نوافذه المنبثقة ما لم يتم ضبط COOP باستخدام same-origin
أو same-origin-allow-popups
. ويعني ذلك أنّ بإمكان same-origin-allow-popups
حماية المستند من الرجوع إليه عند فتحه كنافذة منبثقة، مع السماح له بالتواصل مع النوافذ المنبثقة الخاصة به.
Cross-Origin-Opener-Policy: same-origin-allow-popups
السماح بالرجوع إلى مستند من خلال نوافذ متعددة المصادر
unsafe-none
هي القيمة التلقائية، ولكن يمكنك الإشارة بشكل صريح إلى أنّه
يمكن فتح هذا المستند من خلال نافذة من مصادر متعددة مع الاحتفاظ بإمكانية الوصول المتبادل.
Cross-Origin-Opener-Policy: unsafe-none
الإبلاغ عن أنماط غير متوافقة مع COOP
يمكنك تلقّي تقارير عندما تمنع أداة COOP التفاعل بين النوافذ المتعددة مع واجهة برمجة التطبيقات Reporting API.
Cross-Origin-Opener-Policy: same-origin; report-to="coop"
يتيح COOP أيضًا استخدام وضع إعداد التقارير فقط، ما يتيح لك تلقّي التقارير بدون حظر الاتصال بين المستندات المتعددة المصادر.
Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop"
المتصفحات المعتمدة
مزيد من المعلومات
مشاركة الموارد المتعدّدة المصادر (CORS)
على عكس العناصر الأخرى الواردة في هذه المقالة، لا تُعد مشاركة الموارد المتعدّدة المصادر (CORS) عنوانًا، ولكنها آلية متصفّح تطلب من المستخدمين الوصول إلى الموارد المتعدّدة المصادر وتسمح لهم بالوصول إليها.
تفرض المتصفحات سياسة المصدر نفسه تلقائيًا لمنع صفحة ويب من الوصول إلى الموارد المتعددة المصادر. على سبيل المثال، عند تحميل صورة من مصادر متعددة، على الرغم من عرضها على صفحة الويب بشكل مرئي، لا يمكن لملف JavaScript في الصفحة الوصول إلى بيانات الصورة. يمكن لموفّر الموارد تخفيف القيود والسماح للمواقع الإلكترونية الأخرى بقراءة المورد عن طريق الاشتراك في بروتوكول CORS.
مثال على الاستخدام
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
قبل النظر في طريقة ضبط بروتوكول CORS، من الضروري فهم الفرق بين أنواع الطلبات. وبناءً على تفاصيل الطلب، سيتم تصنيف الطلب كطلب بسيط أو طلب تم تنفيذه مسبقًا.
معايير الطلب البسيط:
- الطريقة هي
GET
أوHEAD
أوPOST
. - لا تتضمّن العناوين المخصّصة سوى
Accept
وAccept-Language
وContent-Language
وContent-Type
. - قيمة
Content-Type
هيapplication/x-www-form-urlencoded
أوmultipart/form-data
أوtext/plain
.
ويتم تصنيف كل شيء آخر كطلب مقدَّم مسبقًا. لمزيد من التفاصيل، راجِع مشاركة الموارد المتعدّدة المصادر (CORS) - HTTP | MDN.
الاستخدامات المقترَحة
طلب بسيط
عندما يستوفي الطلب معايير الطلب البسيطة، يرسل المتصفّح
طلبًا من مصادر متعددة يتضمن العنوان Origin
الذي يشير إلى
مصدر الطلب.
مثال على عنوان الطلب
Get / HTTP/1.1 Origin: https://example.com
مثال على عنوان الاستجابة
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true
- تشير السمة
Access-Control-Allow-Origin: https://example.com
إلى أنّه بإمكانhttps://example.com
الوصول إلى محتوى الردّ. يمكن للموارد المصممة لتكون سهلة القراءة من خلال أي موقع إلكتروني ضبط هذا العنوان على*
، وفي هذه الحالة لن يطلب المتصفّح سوى تقديم الطلب بدون بيانات اعتماد. - تشير السمة
Access-Control-Allow-Credentials: true
إلى أنّه يُسمح للطلبات التي تتضمّن بيانات اعتماد (ملفات تعريف الارتباط) بتحميل المورد. وبخلاف ذلك، سيتم رفض الطلبات التي تمت مصادقتها حتى إذا كان مصدر الطلب متوفرًا في عنوانAccess-Control-Allow-Origin
.
يمكنك تجربة كيفية تأثير الطلب البسيط في تحميل الموارد ضمن بيئة Cross-Origin-Embedder-Policy: require-corp
في هذا
العرض التوضيحي. انقر على مربّع الاختيار
مشاركة الموارد المتعدّدة المصادر وانقر على الزر إعادة تحميل الصورة
للاطّلاع على التأثير.
الطلبات المقدّمة مُسبقًا
ويأتي الطلب الذي تم إرساله مُسبقًا بطلب OPTIONS
للتحقّق مما إذا كان مسموحًا بإرسال الطلب اللاحق.
مثال على عنوان الطلب
OPTIONS / HTTP/1.1 Origin: https://example.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-PINGOTHER, Content-Type
- تسمح السمة
Access-Control-Request-Method: POST
بتقديم الطلب التالي باستخدام الطريقةPOST
. - تسمح السمة
Access-Control-Request-Headers: X-PINGOTHER, Content-Type
لمقدّم الطلب بضبط عنوانَي HTTPX-PINGOTHER
وContent-Type
في الطلب اللاحق.
أمثلة على عناوين الاستجابة
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
- تشير السمة
Access-Control-Allow-Methods: POST, GET, OPTIONS
إلى أنّه يمكن إرسال الطلبات اللاحقة باستخدام الطرقPOST
وGET
وOPTIONS
. - تشير السمة
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
إلى أنّ الطلبات اللاحقة يمكن أن تتضمّن العنوانَينX-PINGOTHER
وContent-Type
. - تشير السمة
Access-Control-Max-Age: 86400
إلى أنّه يمكن تخزين نتيجة الطلب المقدَّم مسبقًا مؤقتًا لمدة 86400 ثانية.
المتصفحات المعتمدة
مزيد من المعلومات
سياسة أداة تضمين المحتوى من مصادر متعددة (COEP)
لتقليل قدرة الهجمات المستندة إلى Spectre على
سرقة الموارد من مصادر متعددة، يتم إيقاف ميزات مثل SharedArrayBuffer
أو
performance.measureUserAgentSpecificMemory()
بشكل تلقائي.
تمنع ميزة Cross-Origin-Embedder-Policy: require-corp
المستندات والعاملين من تحميل الموارد المتعددة المصادر، مثل الصور والنصوص البرمجية وأوراق الأنماط وإطارات iframe وغيرها، ما لم يتم تفعيل التحميل بشكل صريح لهذه الموارد من خلال عناوين CORS
أو CORP. يمكن دمج بروتوكول COEP مع Cross-Origin-Opener-Policy
لتفعيل حظر الوصول من نطاقات أخرى في مستند معيّن.
يمكنك استخدام Cross-Origin-Embedder-Policy: require-corp
عندما تريد تفعيل
العزل المشترك المصدر للمستند.
مثال على الاستخدام
Cross-Origin-Embedder-Policy: require-corp
أمثلة على الاستخدامات
يحتوي COEP على قيمة واحدة تبلغ require-corp
. من خلال إرسال هذا العنوان، يمكنك
توجيه المتصفّح لحظر تحميل الموارد التي لا يتم تفعيلها من خلال
CORS أو CORP.
يمكنك تجربة كيفية تأثير الإعدادات التالية في تحميل الموارد في هذا العرض التوضيحي. غيِّر القائمة المنسدلة Cross-Origin-Embedder-Policy، والقائمة المنسدلة Cross-Origin-Embedder-Policy، ومربّع الاختيار Cross-Origin-Embedder-Policy، وما إلى ذلك لمعرفة مدى تأثيرها في تحميل الموارد. بالإضافة إلى ذلك، افتح العرض التوضيحي لنقطة نهاية إعداد التقارير لمعرفة ما إذا تم الإبلاغ عن الموارد المحظورة.
تفعيل حظر الوصول من نطاقات أخرى
فعِّل عزل البيانات من نطاقات أخرى من خلال إرسال Cross-Origin-Embedder-Policy: require-corp
مع Cross-Origin-Opener-Policy: same-origin
.
Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin
الإبلاغ عن الموارد غير المتوافقة مع سياسة COEP
يمكنك تلقّي تقارير عن الموارد المحظورة الناتجة عن سياسة COEP، وذلك باستخدام Reporting API.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"
يتوافق بروتوكول COEP أيضًا مع وضع إعداد التقارير فقط، ما يتيح لك تلقّي التقارير بدون حظر تحميل الموارد.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"
المتصفحات المعتمدة
مزيد من المعلومات
الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS)
لا يتم تشفير الاتصال عبر اتصال HTTP عادي، ما يتيح للمتنصتين على مستوى الشبكة الوصول إلى البيانات المنقولة.
ويُعلِم عنوان Strict-Transport-Security
المتصفّح بأنّه يجب عدم تحميل الموقع الإلكتروني باستخدام بروتوكول HTTP واستخدام بروتوكول HTTPS بدلاً من ذلك. بعد ضبطه، سيستخدم المتصفح بروتوكول HTTPS بدلاً من HTTP للوصول إلى النطاق بدون إعادة توجيه للمدة المحددة في العنوان.
مثال على الاستخدام
Strict-Transport-Security: max-age=31536000
الاستخدامات المقترَحة
من المفترض أن تستجيب جميع المواقع الإلكترونية التي تنتقل من HTTP إلى HTTPS باستخدام عنوان Strict-Transport-Security
عند تلقّي طلب عبر HTTP.
Strict-Transport-Security: max-age=31536000
المتصفحات المعتمدة