اطّلِع على مزيد من المعلومات عن العناوين التي يمكنها الحفاظ على أمان موقعك الإلكتروني والبحث سريعًا عن أهم التفاصيل.
تسرد هذه المقالة أهم عناوين الأمان التي يمكنك استخدامها لحماية موقعك الإلكتروني. يمكنك استخدامها للتعرّف على ميزات الأمان المستندة إلى الويب ومعرفة كيفية تنفيذها على موقعك الإلكتروني، ويمكنك الرجوع إليها عند الحاجة إلى تذكير.
- رؤوس الأمان المقترَحة للمواقع الإلكترونية التي تتعامل مع بيانات المستخدمين الحسّاسة:
- سياسة أمان المحتوى (CSP)
- الأنواع الموثوق بها
- عناوين الأمان المقترَحة لجميع المواقع الإلكترونية:
- X-Content-Type-Options
- X-Frame-Options
- سياسة الموارد المشتركة المصدر (CORP)
- سياسة المُفجِّح المشترَك المصدر (COOP)
- الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS)
- رؤوس الأمان للمواقع الإلكترونية التي تتضمّن إمكانات متقدّمة:
- مشاركة الموارد المتعددة المصادر (CORS)
- سياسة أداة تضمين المحتوى من مصادر خارجية (COEP)
قبل الغوص في رؤوس الأمان، تعرَّف على التهديدات المعروفة على الويب وسبب استخدام رؤوس الأمان هذه.
حماية موقعك الإلكتروني من ثغرات حقن البيانات
تحدث ثغرات حقن البيانات عندما تؤثر البيانات غير الموثوق بها التي يعالجها تطبيقك في سلوكه، ويؤدي ذلك عادةً إلى تنفيذ نصوص برمجية يتحكّم فيها المهاجمون. إنّ الثغرة الأمنية الأكثر شيوعًا التي تنتج عن أخطاء برمجية متعلقة بعمليات الحقن هي النصوص البرمجية للمواقع الإلكترونية المشترَكة (XSS) بأشكالها المختلفة، بما في ذلك النصوص البرمجية المشترَكة المُعاد توجيهها، النصوص البرمجية المشترَكة المخزّنة، النصوص البرمجية المشترَكة المستنِدة إلى نموذج العناصر في المستند (DOM)، وغيرها من الأنواع.
قد تتيح ثغرة هجوم XSS عادةً للمهاجم الوصول الكامل إلى بيانات المستخدم التي يعالجها التطبيق وأي معلومات أخرى مستضافة في مصدر الويب نفسه.
تشمل التدابير التقليدية للحماية من عمليات الإدراج استخدام أنظمة نماذج HTML للترميز التلقائي بشكلٍ متسق، وتجنُّب استخدام واجهات برمجة تطبيقات JavaScript الخطيرة، ومعالجة بيانات المستخدمين بشكلٍ سليم من خلال استضافة عمليات تحميل الملفات في نطاق منفصل وتطهير صفحات HTML التي يتحكم فيها المستخدم.
- استخدِم سياسة أمان المحتوى (CSP) للتحكّم في النصوص البرمجية التي يمكن تنفيذها من خلال تطبيقك للحدّ من خطر عمليات الحقن.
- استخدِم الأنواع الموثوق بها لفرض تطهير البيانات التي يتم تمريرها إلى واجهات برمجة التطبيقات الخطيرة JavaScript API.
- استخدِم X-Content-Type-Options لمنع المتصفّح من تفسير أنواع MIME لموارد موقعك الإلكتروني بشكل خاطئ، ما قد يؤدي إلى تنفيذ النصوص البرمجية.
عزل موقعك الإلكتروني عن المواقع الإلكترونية الأخرى
يسمح انفتاح الويب للمواقع الإلكترونية بالتفاعل مع بعضها البعض بطرق يمكن أن تنتهك توقعات أمان التطبيق. ويشمل ذلك تقديم طلبات مُعتمَدة بشكل غير متوقَّع أو تضمين بيانات من تطبيق آخر في مستند المهاجم، ما يسمح للمهاجم بتعديل بيانات التطبيق أو قراءتها.
تشمل نقاط الضعف الشائعة التي تُضعف عزل الويب إخفاء النقرات وتزوير الطلبات على عدة مواقع إلكترونية (CSRF) وتضمين نص برمجي على مواقع إلكترونية متعددة (XSSI) وتسرُّب العديد من المواقع الإلكترونية.
- استخدِم X-Frame-Options لمنع أحد المواقع الإلكترونية الضارّة من تضمين مستنداتك.
- استخدِم سياسة الموارد المشتركة المنشأ (CORP) لمنع موقع إلكتروني من مصدر مختلف من تضمين موارد موقعك الإلكتروني.
- استخدِم سياسة Opener Cross-Origin (COOP) لحماية نوافذ موقعك الإلكتروني من التفاعلات التي تجريها المواقع الإلكترونية الضارة.
- استخدِم مشاركة الموارد المتعدّدة المصادر (CORS) للتحكّم في الوصول إلى موارد موقعك الإلكتروني من المستندات المتعدّدة المصادر.
تطوير الويب بعد Spectre هو مقالة رائعة إذا كنت مهتمًا بهذه العناوين.
إنشاء موقع إلكتروني فعّال وآمن
يضع Spectre أي بيانات يتم تحميلها
في مجموعة سياق التصفّح نفسها التي يمكن قراءتها
على الرغم من سياسة المصدر نفسه. تقيِّد المتصفّحات الميزات
التي قد تستغلّ الثغرة الأمنية من خلال بيئة خاصة تُعرف باسم
"عزل مصادر البيانات". من خلال حظر الوصول من نطاقات أخرى، يمكنك
استخدام ميزات فعّالة، مثل SharedArrayBuffer
.
- استخدِم سياسة أداة تضمين المحتوى من مصادر خارجية (COEP) مع COOP لأجل تفعيل ميزة حظر الوصول من نطاقات أخرى.
تشفير الزيارات إلى موقعك الإلكتروني
تظهر مشاكل التشفير عندما لا يشفِّر التطبيق البيانات أثناء نقلها بالكامل، ما يسمح للمهاجمين الذين يتنصّتون بمعرفة تفاعلات المستخدم مع التطبيق.
يمكن أن يحدث التشفير غير الكافي في الحالات التالية: عدم استخدام HTTPS،
المحتوى المختلط، ضبط ملفات تعريف الارتباط بدون سمة Secure
(أو البادئة __Secure
)،
أو منطق التحقّق من CORS المتساهلة
.
- استخدِم الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS) لعرض المحتوى بشكلٍ ثابت من خلال بروتوكول HTTPS.
سياسة أمان المحتوى (CSP)
هجمات النصوص البرمجية على المواقع الإلكترونية (XSS) هي هجمات تسمح فيها ثغرة أمنية على موقع إلكتروني بإدخال برنامج نصي ضار و تنفيذه.
توفر Content-Security-Policy
طبقة إضافية للتخفيف من هجمات XSS من خلال
تقييد النصوص البرمجية التي يمكن تنفيذها من خلال الصفحة.
ننصحك بتفعيل ميزة "سياسة الخدمة المحدودة" باستخدام إحدى الطريقتَين التاليتَين:
- إذا كنت تعرض صفحات HTML على الخادم، استخدِم بروتوكول CSP صارمًا يستند إلى مفتاح عشوائي.
- إذا كان يجب عرض رمز HTML بشكل ثابت أو تخزينه مؤقتًا، على سبيل المثال إذا كان تطبيقًا مكوّنًا من صفحة واحدة، استخدِم سياسة أمان محتوى صارمة تستند إلى التجزئة.
مثال على الاستخدام: سياسة أمان محتوى (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 مثالاً جيدًا على سياسة CSP الصارمة المستندة إلى مفتاح nonce. استخدِم أدوات المطوّرين لمعرفة كيفية استخدامها.
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 كعنوان من جهة الخادم، يمكنك أيضًا ضبطها كعلامة وصفية. يُرجى العِلم أنّه لا يمكنك استخدام وضع التقارير فقط للعلامات الوصفية (مع أنّه قد يتغيّر هذا الوضع).
مزيد من المعلومات
الأنواع الموثوق بها
هجوم
XSS المستنِد إلى DOM هو نوع من هجمات
التي يتم فيها تمرير بيانات ضارة إلى عنصر Sink يتيح تنفيذ رمز متغيّر، مثل 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;'
الاستخدامات المقترَحة
-
فرض Trusted Types على مصادر 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 خطيرة مع سلسلة إلى حدوث خطأ.
المتصفحات المتوافقة
مزيد من المعلومات
- منع الثغرات الأمنية في النصوص البرمجية عبر المواقع الإلكترونية المستندة إلى نموذج DOM باستخدام الأنواع الموثوق بها
- CSP: require-trusted-types-for - HTTP | MDN
- CSP: trusted-types - 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-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
ننصحك بأن تطبّق الخدمات المشابهة لشبكة توصيل المحتوى (CDN) 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
إلى عزل المستند عن نوافذ المستندات
التي لها عناوين URL متعددة المصادر.
Cross-Origin-Opener-Policy: same-origin
عزل مستند عن النوافذ التي لها مصادر متعددة مع السماح بالنوافذ المنبثقة
يسمح الإعداد same-origin-allow-popups
للمستند بالاحتفاظ بإشارة إلى
النوافذ المنبثقة ما لم يتم ضبط سياسة التعاون مع الأطفال باستخدام 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"
تتيح ميزة "التعاون بدون إنترنت" أيضًا وضع "التقارير فقط" حتى تتمكّن من تلقّي التقارير بدون حظر الاتصال بين المستندات من مصادر مختلفة.
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، والقيمة في المربّع بجانب Report Only (الإبلاغ فقط)، والقائمة المنسدلة 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 باستخدام Reporting API.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"
تتيح لك ميزة "المعالجة المحدودة للبيانات" أيضًا استخدام وضع "التقارير فقط" حتى تتمكّن من تلقّي التقارير بدون حظر تحميل الموارد.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"
المتصفحات المتوافقة
مزيد من المعلومات
الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP
لا يتم تشفير الاتصالات عبر اتصال HTTP عادي، ما يجعله يمكن للمتجسّسين على مستوى الشبكة الوصول إلى البيانات المنقولة.
يُعلم عنوان Strict-Transport-Security
المتصفّح بأنّه يجب عدم تحميل
الموقع الإلكتروني باستخدام HTTP واستخدام HTTPS بدلاً من ذلك. بعد ضبط السياسة، سيستخدم المتصفّح
HTTPS بدلاً من HTTP للوصول إلى النطاق بدون إعادة توجيه
لمدة محددة في العنوان.
مثال للاستخدام
Strict-Transport-Security: max-age=31536000
الاستخدامات المقترَحة
عند تلقّي طلب باستخدام HTTP، يجب أن تعرض كل المواقع الإلكترونية التي تنتقل من HTTP إلى HTTPS هذا العنوان بعرض Strict-Transport-Security
.
Strict-Transport-Security: max-age=31536000
المتصفحات المتوافقة