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

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

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

عناوين الأمان المقترَحة للمواقع الإلكترونية التي تعالج بيانات المستخدمين الحسّاسة:
سياسة أمان المحتوى (CSP)
أنواع موثوق بها
عناوين الأمان المقترَحة لجميع المواقع الإلكترونية:
X-Content-Type-Options
X-Frame-Options
سياسة مشاركة الموارد مع مواقع متعدّدة (CORP)
سياسة فتح النوافذ من مصادر متعددة (COOP)
الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP ‏ (HSTS)
عناوين الأمان للمواقع الإلكترونية التي تتضمّن إمكانات متقدّمة:
مشاركة المراجع مع نطاقات خارجية (CORS)
سياسة أداة تضمين المحتوى من مصادر خارجية (COEP)
التهديدات المعروفة على الويب
قبل التعرّف على رؤوس الأمان، تعرَّف على التهديدات المعروفة على الويب والأسباب التي تدفعك إلى استخدام رؤوس الأمان هذه.

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

حماية موقعك الإلكتروني من الثغرات الأمنية المتعلقة بالحقن

تحدث ثغرات الحقن عندما تؤثر البيانات غير الموثوق بها التي يعالجها تطبيقك في سلوكه، وتؤدي عادةً إلى تنفيذ نصوص برمجية يتحكّم فيها المهاجم. إنّ الثغرة الأمنية الأكثر شيوعًا التي تسببها أخطاء الحقن هي هجمة النصوص البرمجية على المواقع الإلكترونية (XSS) بأشكالها المختلفة، بما في ذلك هجمة XSS المنعكسة وهجمة XSS المخزّنة وهجمة XSS المستنِدة إلى DOM وغيرها من الأنواع.

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

تشمل وسائل الحماية التقليدية من عمليات الحقن الاستخدام المتّسق لأنظمة نماذج HTML التي يتم فيها تفعيل الهروب التلقائي، وتجنُّب استخدام واجهات برمجة تطبيقات JavaScript الخطيرة، ومعالجة بيانات المستخدمين بشكل سليم من خلال استضافة عمليات تحميل الملفات في نطاق منفصل وتنظيف HTML الذي يتحكّم فيه المستخدم.

  • استخدِم سياسة أمان المحتوى (CSP) للتحكّم في النصوص البرمجية التي يمكن أن ينفّذها تطبيقك من أجل الحدّ من خطر عمليات الحقن.
  • استخدِم Trusted Types لفرض تنظيف البيانات التي يتم تمريرها إلى واجهات برمجة تطبيقات JavaScript الخطيرة.
  • استخدِم X-Content-Type-Options لمنع المتصفّح من إساءة تفسير أنواع MIME لموارد موقعك الإلكتروني، ما قد يؤدي إلى تنفيذ النصوص البرمجية.

عزل موقعك الإلكتروني عن المواقع الإلكترونية الأخرى

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

تشمل الثغرات الأمنية الشائعة التي تقوّض عزل المواقع الإلكترونية هجمات النقر وتزوير الطلبات من مواقع إلكترونية مختلفة (CSRF) وإدراج البرنامج النصي على مواقع إلكترونية مختلفة (XSSI) وعمليات تسريب البيانات على مواقع إلكترونية مختلفة.

Post-Spectre Web Development هو مقال رائع إذا كنت مهتمًا بهذه العناوين.

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

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

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

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

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

سياسة أمان المحتوى (CSP)

هجوم البرمجة عبر المواقع الإلكترونية (XSS) هو هجوم يسمح فيه وجود ثغرة أمنية في موقع إلكتروني بحقن برنامج نصي ضار وتنفيذه.

توفّر Content-Security-Policy طبقة إضافية للحدّ من هجمات البرمجة عبر المواقع من خلال تقييد البرامج النصية التي يمكن للصفحة تنفيذها.

ننصحك بتفعيل سياسة CSP الصارمة باستخدام إحدى الطرق التالية:

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

مثال على الاستخدام: سياسة أمان محتوى مستندة إلى أرقام الاستخدام لمرة واحدة

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 على الخادم، استخدِم سياسة صارمة لأمان المحتوى تستند إلى أرقام الاستخدام لمرة واحدة.

أنشئ قيمة جديدة لرقم خاص للنص البرمجي لكل طلب على جهة الخادم واضبط العنوان التالي:

ملف إعدادات الخادم

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 Evaluator هي أداة جيدة لتقييم "سياسة أمان المحتوى"، وهي في الوقت نفسه مثال جيد على "سياسة أمان المحتوى" الصارمة المستندة إلى الرقم الخاص. استخدِم "أدوات مطوّري البرامج" لمعرفة طريقة استخدامها.

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

ملاحظات أخرى حول سياسة أمان المحتوى

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

Trusted Types

هجمات البرمجة النصية على المواقع الإلكترونية (XSS) المستندة إلى نموذج المستند (DOM) هي هجمات يتم فيها تمرير بيانات ضارة إلى مصدر يقبل تنفيذ الرموز الديناميكية، مثل eval() أو .innerHTML.

توفّر Trusted Types الأدوات اللازمة لكتابة التطبيقات ومراجعتها من ناحية الأمان وصيانتها بدون التعرّض لهجمات XSS المستنِدة إلى DOM. ويمكن تفعيلها من خلال سياسة أمان المحتوى (CSP)، ما يجعل رمز JavaScript آمنًا تلقائيًا من خلال حصر واجهات برمجة تطبيقات الويب الخطيرة على قبول كائن خاص فقط، وهو Trusted Type.

لإنشاء هذه العناصر، يمكنك تحديد سياسات أمان تضمن تطبيق قواعد الأمان (مثل الهروب أو التنظيف) بشكل متّسق قبل كتابة البيانات في نموذج المستند (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;

كيفية استخدام Trusted Types

  1. فرض استخدام Trusted Types لمصادر DOM الخطيرة عنوان CSP وTrusted Types:

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

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

    بالطبع، يمكنك الجمع بين Trusted Types وتوجيهات أخرى في سياسة أمان المحتوى:

دمج سياسة CSP المستندة إلى nonce من الأعلى مع Trusted Types:

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> يمكنك حصر أسماء سياسات Trusted Types المسموح بها من خلال ضبط توجيه <code>trusted-types</code> إضافي (على سبيل المثال، <code>trusted-types myPolicy</code>)، ولكن هذا ليس شرطًا. </aside>

  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-Options

ننصح باستخدام 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

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

Browser Support

  • Chrome: 64.
  • Edge: 12.
  • Firefox: 50.
  • Safari: 11.

Source

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

X-Frame-Options

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

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

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

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

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

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

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

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

X-Frame-Options: DENY
X-Frame-Options: DENY

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

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

X-Frame-Options: SAMEORIGIN

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

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 4.

Source

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

سياسة مشاركة الموارد عبر المصادر الخاصة بالموقع الإلكتروني (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
Cross-Origin-Resource-Policy: cross-origin

حصر الموارد التي سيتم تحميلها من same-origin

يجب تطبيق same-origin على الموارد التي يُراد تحميلها فقط من خلال صفحات من المصدر نفسه. يجب تطبيق ذلك على الموارد التي تتضمّن معلومات حسّاسة عن المستخدم أو ردود واجهة برمجة التطبيقات التي من المفترض أن يتم طلبها فقط من المصدر نفسه.

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

Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin

حصر الموارد التي سيتم تحميلها من same-site

ننصح بتطبيق same-site على الموارد المشابهة لما ورد أعلاه، ولكنّها مخصّصة ليتم تحميلها من خلال نطاقات فرعية أخرى من موقعك الإلكتروني.

Cross-Origin-Resource-Policy: same-site
Cross-Origin-Resource-Policy: same-site

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

Browser Support

  • Chrome: 73.
  • Edge: 79.
  • Firefox: 74.
  • Safari: 12.

Source

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

سياسة Cross-Origin Opener Policy (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: 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
Cross-Origin-Opener-Policy: same-origin-allow-popups

السماح للنوافذ المتعددة المصادر بالإشارة إلى مستند

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

إنّ Cross-Origin-Opener-Policy: 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"

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

Browser Support

  • Chrome: 83.
  • Edge: 83.
  • Firefox: 79.
  • Safari: 15.2.

Source

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

مشاركة المراجع مع نطاقات خارجية (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 ثانية.

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

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 3.5.
  • Safari: 4.

Source

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

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

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

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

طريقة عمل COEP

يمكنك تجربة تأثير الإعدادات التالية على تحميل الموارد في هذا العرض التوضيحي. غيِّر القائمة المنسدلة Cross-Origin-Embedder-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 باستخدام Reporting API.

Cross-Origin-Embedder-Policy: require-corp; report-to="coep"

تتيح سياسة COEP أيضًا وضع "الإبلاغ فقط"، ما يتيح لك تلقّي التقارير بدون حظر تحميل الموارد فعليًا.

Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"

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

Browser Support

  • Chrome: 83.
  • Edge: 83.
  • Firefox: 79.
  • Safari: 15.2.

Source

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

الأمان المشدَّد لنقل البيانات باستخدام بروتوكول 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

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

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 7.

Source

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

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