المرجع السريع لعناوين الأمان

اطّلِع على مزيد من المعلومات حول العناوين التي يمكنها الحفاظ على أمان موقعك الإلكتروني والبحث بسرعة عن أهم التفاصيل.

تسرد هذه المقالة أهم عناوين الأمان التي يمكنك استخدامها لحماية موقعك الإلكتروني. يمكنك استخدامه للتعرّف على ميزات الأمان المستنِدة إلى الويب والتعرّف على طريقة وتنفيذها على موقعك الإلكتروني، وكمرجع للوقت الذي تحتاج فيه إلى تذكير.

يُنصح باستخدام عناوين الأمان للمواقع الإلكترونية التي تعالج بيانات المستخدمين الحساسة:
سياسة أمان المحتوى (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) والعديد عمليات تسريب المعلومات على عدة مواقع إلكترونية:

ويب ما بعد الطيف يُعدّ التطوير قراءة رائعة. إذا كنت مهتمًا بهذه العناوين

إنشاء موقع إلكتروني فعال بشكل آمن

Spectre يضع أي بيانات محمّلة في مجموعة سياق التصفح نفسها التي يُحتمل أن تكون قابلة للقراءة على الرغم من سياسة المصدر نفسه. حظر الميزات في المتصفّحات التي قد تستغل الثغرة الأمنية وراء بيئة خاصة تسمى "حظر الوصول من نطاقات أخرى". من خلال حظر الوصول من نطاقات أخرى، يمكنك تستخدم ميزات قوية مثل SharedArrayBuffer.

تشفير الزيارات إلى موقعك الإلكتروني

تظهر مشكلات التشفير عندما لا يقوم أحد التطبيقات بتشفير البيانات بالكامل في النقل العام، مما يسمح للمهاجمين المتنصتين بالتعرف على تفاعلات المستخدم بواسطة التطبيق.

يمكن أن يظهر تشفير غير كافٍ في الحالات التالية: عند عدم استخدام HTTPS، محتوى مختلط، وضبط ملفات تعريف الارتباط بدون Secure السمة (أو __Secure بادئة)، أو التحقق من صحة سياسة مشاركة الموارد المتعددة المصادر (CORS) المنطق.

سياسة أمان المحتوى (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';
كيفية استخدام سياسة CSP

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)

مزيد من المعلومات

الأنواع الموثوق بها

الاستناد إلى نموذج العناصر في المستند (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, '&lt;').replace(/>/g, '&gt;');
    }
  });
}

// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = &#39;some string&#39;; // This throws an exception.

// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML(&#39;&lt;img src=x onerror=alert(1)&gt;&#39;);
el.innerHTML = escaped;  // &#39;&amp;lt;img src=x onerror=alert(1)&amp;gt;&#39;

كيفية استخدام ميزة "الأنواع الموثوق بها"

  1. فرض الأنواع الموثوق بها على أحواض DOM الخطيرة عنوان CSP والأنواع الموثوق بها:

    Content-Security-Policy: require-trusted-types-for 'script'
    

    تُعد 'script' حاليًا القيمة الوحيدة المقبولة التوجيه require-trusted-types-for.

    بالطبع، يمكنك الجمع بين "الأنواع الموثوق بها" وتوجيهات CSP الأخرى:

دمج سياسة أمان محتوى (CSP) غير مستندة إلى المعامل أعلاه مع الأنواع الموثوق بها:

Content-Security-Policy:
  script-src &#39;nonce-{RANDOM1}&#39; &#39;strict-dynamic&#39; https: &#39;unsafe-inline&#39;;
  object-src &#39;none&#39;;
  base-uri &#39;none&#39;;
  require-trusted-types-for &#39;script&#39;;

<aside class="note"><b>ملاحظة: </b> يمكنك الحد من أسماء سياسات الأنواع الموثوق بها المسموح بها من خلال وضع <code>أنواع إضافية موثوق بها</code>. (على سبيل المثال، <code>trusted-types myPolicy</code>). ومع ذلك، هذا ليس شرطًا. &lt;/aside&gt;

  1. تعريف سياسة

    السياسة:

    // Feature detection
    if (window.trustedTypes && trustedTypes.createPolicy) {
      // Name and create a policy
      const policy = trustedTypes.createPolicy('escapePolicy', {
        createHTML: str => {
          return str.replace(/\/g, '>');
        }
      });
    }
    
  2. تطبيق السياسة

    استخدِم السياسة عند كتابة البيانات في DOM:

    // Assignment of raw strings are blocked by Trusted Types.
    el.innerHTML = &#39;some string&#39;; // This throws an exception.</p>
    
    <p>// Assignment of Trusted Types is accepted safely.
    const escaped = policy.createHTML(&#39;<img src="x" onerror="alert(1)">&#39;);
    el.innerHTML = escaped;  // &#39;&lt;img src=x onerror=alert(1)&gt;&#39;
    

    مع require-trusted-types-for 'script'، يعد استخدام النوع الموثوق به المتطلب. سيؤدي استخدام أي واجهة برمجة تطبيقات DOM خطيرة مع سلسلة إلى خطأ.

المتصفحات المتوافقة

مزيد من المعلومات

X-Content-Type-Options

عند عرض مستند HTML ضار من نطاقك (على سبيل المثال، إذا كانت العلامة الصورة التي تم تحميلها إلى خدمة الصور تحتوي على ترميز HTML صالح)، مع بعض المتصفحات سنتعامل معه كمستند نشط ويسمح له بتنفيذ النصوص البرمجية في سياق التطبيق، مما يؤدي إلى تنفيذ نصوص برمجية عبر المواقع خطأ.

يمنع X-Content-Type-Options: nosniff ذلك من خلال إرشاد المتصفّح بأنه نوع MIME الذي تم ضبطه في عنوان Content-Type لاستجابة معيّنة صحيح. هذا الرأس هو لجميع الموارد.

مثال للاستخدام

X-Content-Type-Options: nosniff
كيفية استخدام خيارات X-Content-Type-Type

يُنصَح باستخدام السمة X-Content-Type-Options: nosniff لجميع الموارد التي يتم عرضها من خادمك مع عنوان Content-Type الصحيح.

X-Content-Type-Options: nosniff

أمثلة على العناوين التي تم إرسالها باستخدام ملف HTML للمستند

X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 64.
  • الحافة: 12.
  • Firefox: 50.
  • Safari: 11-

المصدر

مزيد من المعلومات

X-Frame-Options

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

تشير السمة X-Frame-Options إلى ما إذا كان يجب السماح للمتصفّح بالعرض أم لا. صفحة في <frame> أو <iframe> أو <embed> أو <object> جميع المستندات يُنصح بإرسال هذا العنوان للإشارة إلى ما إذا كانت تسمح التي تم تضمينها في مستندات أخرى.

مثال للاستخدام

X-Frame-Options: DENY
كيفية استخدام خيارات X-Frame

يجب أن تستخدم جميع المستندات غير المصممة لتضمينها رأس X-Frame-Options.

يمكنك تجربة تأثير التهيئات التالية في تحميل إطار iframe على هذا تجريبي. تغيير X-Frame-Options القائمة المنسدلة وانقر على الزر إعادة تحميل iframe.

حماية موقعك الإلكتروني من أن يتم تضمينه في أي مواقع إلكترونية أخرى

رفض أن يتم تضمينها في أي مستندات أخرى

خيارات الإطار X: DENY
X-Frame-Options: DENY

حماية موقعك الإلكتروني من أن يكون مضمّنًا في أي مواقع إلكترونية متعددة المصادر

السماح بالتضمين فقط من خلال مستندات المصدر نفسه.

X-Frame-Options: SAMEORIGIN

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 4-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: الإصدار 4-

المصدر

مزيد من المعلومات

سياسة الموارد المتعددة المصادر (CORP)

ويمكن للمهاجم تضمين موارد من مصدر آخر، على سبيل المثال من موقعك الإلكتروني، لمعرفة المعلومات عنها من خلال استغلال المواقع الإلكترونية المتقاطعة التسريبات

تساعد "Cross-Origin-Resource-Policy" على الحدّ من هذا الخطر من خلال الإشارة إلى مجموعة ومواقع الويب التي يمكن تحميله من خلالها. يأخذ العنوان إحدى القيم الثلاث: "same-origin" وsame-site" و"cross-origin" جميع الموارد يُنصح بإرسال هذا العنوان للإشارة إلى ما إذا كانت تسمح بالتحميل من خلال مواقع ويب أخرى.

مثال للاستخدام

Cross-Origin-Resource-Policy: same-origin
كيفية استخدام سياسة CORP

ننصح بعرض جميع الموارد باستخدام أحد الخيارات التالية: ثلاثة عناوين.

يمكنك تجربة كيفية تأثير عمليات الضبط التالية في تحميل الموارد ضمن بيئة 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

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 73.
  • الحافة: 79.
  • Firefox: 74.
  • Safari: 12-

المصدر

مزيد من المعلومات

سياسة البرامج المفتوحة المصدر (COOP)

يمكن للموقع الإلكتروني للمهاجم فتح موقع إلكتروني آخر في نافذة منبثقة للتعرّف على المعلومات حول هذا الموضوع من خلال استغلال المواقع الإلكترونية على مستوى مواقع إلكترونية متعددة التسريبات وفي بعض الحالات، قد يسمح ذلك أيضًا يشير هذا المصطلح إلى استغلال هجمات القنوات الجانبية استنادًا إلى Spectre:

يوفّر العنوان Cross-Origin-Opener-Policy طريقة لعزل المستند. نفسه من نوافذ من مصادر خارجية تم فتحها من خلال window.open() أو رابط يحتوي على target="_blank" بدون rel="noopener". ونتيجة لذلك، يمكن لأي فتح من مصادر متعددة من المستند لن يكون له أي إشارة إليه ولن يتمكن من التفاعل معها.

مثال للاستخدام

Cross-Origin-Opener-Policy: same-origin-allow-popups
كيفية استخدام COOP

يمكنك تجربة كيفية تأثير عمليات الضبط التالية على الاتصال نافذة منبثقة من مصادر متعددة في هذا الإصدار التجريبي. غيِّر القائمة المنسدلة Cross-Origin-Opener-Policy لكل من المستند. والنافذة المنبثقة، انقر على الزر فتح نافذة منبثقة ثم انقر على إرسال postMessage لمعرفة ما إذا تم تسليم الرسالة فعلاً.

عزل مستند عن النوافذ المتعددة المصادر

يؤدي ضبط same-origin إلى عزل المستند من الوصول من نطاقات أخرى. ونوافذ المستندات.

سياسة Cross-Origin-Opener-Policy: المنشأ نفسه
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: the same-origin-allow-popups
Cross-Origin-Opener-Policy: same-origin-allow-popups

السماح بالرجوع إلى مستند من خلال فترات من عدّة مصادر

unsafe-none هي القيمة التلقائية ولكن يمكنك الإشارة بوضوح إلى أن هذه يمكن فتح مستند من خلال نافذة من مصادر متعددة مع الاحتفاظ بإمكانية الوصول المتبادل.

سياسة Cross-Origin-Opener-Policy: غير آمن-ولا
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"

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 83.
  • الحافة: 83.
  • Firefox: 79.
  • Safari: الإصدار 15.2.

المصدر

مزيد من المعلومات

مشاركة الموارد المتعدّدة المصادر (CORS)

وعلى عكس العناصر الأخرى في هذه المقالة، لا تعتبر مشاركة الموارد المتعدّدة المصادر (CORS) عنوان، ولكن آلية متصفح تطلب وتسمح بالوصول إلى موارد مشتركة المنشأ

تفرض المتصفّحات تلقائيًا سياسة المصدر نفسه على منع صفحة ويب من الوصول إلى موارد متعددة المصادر. على سبيل المثال، عندما يتم تحميل صورة من مصادر متعددة، على الرغم من عرضها على صفحة الويب لا يمكن لـ JavaScript الموجود على الصفحة الوصول إلى بيانات الصورة. يمكن لموفّر الموارد تخفيف القيود والسماح للمواقع الإلكترونية الأخرى بقراءة المحتوى. المورد من خلال الاشتراك باستخدام سياسة مشاركة الموارد المتعددة المصادر (CORS).

مثال للاستخدام

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
كيفية استخدام سياسة مشاركة الموارد المتعددة المصادر (CORS)

قبل النظر في كيفية تهيئة سياسة مشاركة الموارد المتعددة المصادر (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 أن تضبط مقدِّم الطلب عنوانَي HTTP X-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 ثانية.

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 4-
  • الحافة: 12.
  • فَيَرفُكس: الإصدار 3.5.
  • Safari: الإصدار 4-

المصدر

مزيد من المعلومات

سياسة أداة تضمين المحتوى من مصادر متعددة (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)

أمثلة على الاستخدامات

يحصل COEP على قيمة واحدة هي require-corp. بإرسال هذا الرأس، يمكنك توجيه المتصفح لحظر تحميل الموارد التي لا تتطلب الموافقة من خلال CORS أو CORP.

آلية عمل سياسة COEP

يمكنك تجربة كيفية تأثير التهيئات التالية في تحميل الموارد على هذا تجريبي. تغيير 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"

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 83.
  • الحافة: 83.
  • Firefox: 79.
  • Safari: الإصدار 15.2.

المصدر

مزيد من المعلومات

الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS)

لا يتم تشفير الاتصال عبر اتصال HTTP عادي، مما يجعل أو نقل بياناتها التي يمكن للمتنصتين على مستوى الشبكة الوصول إليها.

يعلم عنوان Strict-Transport-Security المتصفّح بأنّه يجب عدم تحميله مطلقًا الموقع باستخدام HTTP ويستخدم HTTPS بدلاً من ذلك. وبعد تعيينه، سيستخدم المتصفح HTTPS بدلاً من HTTP للوصول إلى النطاق بدون إعادة توجيه لمدة معيّنة المحدد في العنوان.

مثال للاستخدام

Strict-Transport-Security: max-age=31536000
كيفية استخدام HSTS

ويجب أن تستجيب جميع المواقع الإلكترونية التي تنتقل من HTTP إلى HTTPS عنوان Strict-Transport-Security عند تلقّي طلب باستخدام HTTP.

Strict-Transport-Security: max-age=31536000

المتصفحات المتوافقة

دعم المتصفح

  • Chrome: 4-
  • الحافة: 12.
  • فَيَرفُكس: 4-
  • Safari: الإصدار 7-

المصدر

مزيد من المعلومات

محتوى إضافي للقراءة