اطّلِع على مزيد من المعلومات حول العناوين التي يمكنها الحفاظ على أمان موقعك الإلكتروني والبحث بسرعة عن أهم التفاصيل.
تسرد هذه المقالة أهم عناوين الأمان التي يمكنك استخدامها لحماية موقعك الإلكتروني. يمكنك استخدامه للتعرّف على ميزات الأمان المستنِدة إلى الويب والتعرّف على طريقة وتنفيذها على موقعك الإلكتروني، وكمرجع للوقت الذي تحتاج فيه إلى تذكير.
- يُنصح باستخدام عناوين الأمان للمواقع الإلكترونية التي تعالج بيانات المستخدمين الحساسة:
- سياسة أمان المحتوى (CSP)
- الأنواع الموثوق بها
- عناوين الأمان المُقترَحة لجميع المواقع الإلكترونية:
- X-Content-Type-Options
- X-Frame-Options
- سياسة الموارد المتعددة المصادر (CORP)
- سياسة البرامج المفتوحة المصدر (COOP)
- الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS)
- عناوين الأمان للمواقع الإلكترونية التي تتضمّن إمكانات متقدّمة:
- مشاركة الموارد المتعدّدة المصادر (CORS)
- سياسة أداة التضمين المتعدّدة المصادر (COEP)
قبل التعمّق في تفاصيل عناوين الأمان، عليك التعرّف على التهديدات المعروفة على الويب. ولماذا ستحتاج إلى استخدام رؤوس الأمان هذه.
حماية موقعك الإلكتروني من ثغرات الحقن
تظهر ثغرات الحقن عند معالجة بيانات غير موثوق بها بواسطة تطبيق معين يمكن أن يؤثر على سلوكه، وعادةً ما يؤدي إلى تنفيذ النصوص البرمجية التي يتحكم فيها المهاجم. الثغرة الأكثر شيوعًا الناتجة عن الحقن الأخطاء هو المواقع المتقاطعة البرمجة النصية (XSS) في أشكالها المختلفة، بما في ذلك تعكس XSS، تم تخزين XSS، مستند إلى نموذج العناصر في المستند (DOM) XSS من الأنواع الأخرى.
يمكن لثغرة هجوم XSS أن تمنح المهاجم عادةً إمكانية الوصول الكامل إلى بيانات المستخدم يعالجها التطبيق وأي معلومات أخرى يستضيفها موقع الويب نفسه الأصل.
تشمل الإجراءات الدفاعية التقليدية ضد الحقن استخدامًا ثابتًا للهجوم التلقائي. أنظمة نماذج HTML التي تتجنّب استخدام ملفات JavaScript الخطيرة من خلال واجهات برمجة التطبيقات، ومعالجة بيانات المستخدمين بشكل صحيح من خلال استضافة عمليات تحميل الملفات في نطاق منفصل وتنقيح محتوى HTML الذي يتحكّم فيه المستخدم.
- استخدِم سياسة أمان المحتوى (CSP) للتحكّم في النصوص البرمجية التي يمكن تطبيقك للتخفيف من خطر الحقن.
- استخدام الأنواع الموثوق بها لفرض تعقيم البيانات التي يتم نقلها إلى خطر واجهات برمجة تطبيقات JavaScript.
- استخدِم X-Content-Type-Options لمنع المتصفح من إساءة تفسير أنواع MIME لموارد موقعك الإلكتروني، مما قد يؤدي إلى تنفيذ النص البرمجي.
عزل موقعك الإلكتروني عن المواقع الإلكترونية الأخرى
ويتيح انفتاح الويب لمواقع الويب التفاعل مع بعضها البعض بطرق يمكن أن ينتهك توقعات أمان التطبيق. يتضمن ذلك معلومات غير متوقعة أو تقديم طلبات مصادَق عليها أو تضمين بيانات من تطبيق آخر في مستند المهاجم، مما يسمح للمهاجم بتعديل بيانات التطبيق أو قراءتها.
تشمل الثغرات الأمنية الشائعة التي تقوّض عزل الويب clickjacking وCross-site طلب تزوير (CSRF)، مواقع إلكترونية متعددة تضمين النص البرمجي (XSSI) والعديد عمليات تسريب المعلومات على عدة مواقع إلكترونية:
- استخدم X-Frame-Options لمنع تضمين مستنداتك بواسطة مواقع الويب الضارة.
- استخدام سياسة الموارد المتعددة المصادر (CORP) لمنع اختراق موقعك الإلكتروني الموارد من تضمينها من قبل موقع إلكتروني متعدد المصادر.
- استخدام سياسة البرامج المفتوحة المصدر (COOP) لحماية موقعك الإلكتروني نوافذ من تفاعلات مواقع الويب الضارة.
- استخدام مشاركة الموارد المتعدّدة المصادر (CORS) للتحكّم في الوصول إلى موارد الموقع الإلكتروني من المستندات المشتركة المصدر.
ويب ما بعد الطيف يُعدّ التطوير قراءة رائعة. إذا كنت مهتمًا بهذه العناوين
إنشاء موقع إلكتروني فعال بشكل آمن
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-based-csp}
إذا كنت تعرض صفحات HTML على الخادم، استخدِم سياسة CSP صارمة غير مستندة إلى الهوية.
إنشاء قيمة خاصة لنص برمجي جديدة لكل طلب من جهة الخادم وضبطها الرأس التالي:
ملف إعداد الخادم
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 هو سياسة صارمة وغير متوافقة مع سياسات الخصوصية. مثال. يمكنك استخدام "أدوات مطوري البرامج" للاطّلاع على كيفية استخدامها.
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 كعنوان من جهة الخادم، يمكنك أيضًا ضبطها كعلامة وصفية . تجدر الإشارة إلى أنّه لا يمكنك استخدام وضع إعداد التقارير فقط للعلامات الوصفية (مع أنّ قد تتغيّر هذه الحالة).
مزيد من المعلومات
الأنواع الموثوق بها
الاستناد إلى نموذج العناصر في المستند (DOM)
إنّ XSS هي
هجوم يتم فيه تمرير بيانات ضارة إلى حوض يدعم الرمز الديناميكي
تنفيذ مثل eval()
أو .innerHTML
.
توفّر قناة Trusted Types الأدوات اللازمة للكتابة ومراجعة الأمان والصيانة. تطبيقات خالية من 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 والأنواع الموثوق بها:
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>أنواع إضافية موثوق بها</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 خطيرة مع سلسلة إلى
خطأ.
المتصفحات المتوافقة
مزيد من المعلومات
- منع ثغرات النصوص البرمجية المستندة إلى نموذج العناصر في المستند (DOM) عبر المواقع الإلكترونية باستخدام برنامج "موثوق"
الأنواع
- CSP: طلب-موثوق به-types-for - HTTP |
رقم MDN
- CSP: نوع موثوق به - HTTP |
رقم MDN
- العرض التوضيحي للأنواع الموثوق بها: افتح أداة DevTools Inspector (أداة فحص أدوات مطوّري البرامج) واطّلِع على
ماذا يحدث؟
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-Frame-Options
إذا كان بإمكان أحد المواقع الإلكترونية الضارة تضمين موقعك في إطار iframe، قد يسمح ذلك المهاجمين لاستدعاء إجراءات غير مقصودة من قبل المستخدم من خلال النقر على الإعلانات أيضًا، في بعض الحالات نوع الطيف الهجمات للمواقع الإلكترونية الضارة فرصة للتعرف على محتويات مستند مضمّن.
تشير السمة 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)
لتقليل قدرة الأنظمة المستندة إلى الطيف
هجمات على
سرقة الموارد من مصادر متعددة، وميزات مثل 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-Resource-Policy ومربّع الاختيار Cross-Origin-Resource-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) من خلال صفحة "إعداد التقارير". واجهة برمجة التطبيقات.
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
المتصفحات المتوافقة