سياسة ذات المصدر نفسه

Mariko Kosaka

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

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

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

ويتم تعريف المصدر من خلال المخطط (المعروف أيضًا باسم البروتوكول، على سبيل المثال HTTP أو HTTPS) والمنفذ (إذا تم تحديده) والمضيف. عندما تكون الثلاثة متطابقة بالنسبة إلى عنوانَي URL، فستعتبران المصدر نفسه. على سبيل المثال: إنّ http://www.example.com/foo هو أصل واحد http://www.example.com/bar ولكن ليس https://www.example.com/bar لأن المخطط مختلف.

ما هي المسموحات والمحظورات؟

بشكل عام، يُسمح بتضمين مورد من مصادر متعددة أثناء قراءة حظر الوصول من نطاقات أخرى.

إطارات iframe يُسمح عادةً بالتضمين المتعدد المصادر (بناءً على توجيه X-Frame-Options)، ولكن لا يُسمح بالقراءة من مصادر متعددة (مثل استخدام JavaScript للوصول إلى مستند في إطار iframe).
CSS يمكن تضمين CSS من مصادر متعددة باستخدام عنصر <link> أو @import في ملف CSS. قد يكون عنوان Content-Type الصحيح مطلوبًا.
نماذج يمكن استخدام عناوين URL من مصادر متعددة كقيمة السمة action لعناصر النموذج. يمكن لتطبيق الويب كتابة بيانات النموذج إلى وجهة متعددة المصادر.
صور يُسمح بتضمين الصور من مصادر متعددة. ويتم حظر قراءة بيانات الصور المتعددة المصادر (مثل استرداد البيانات الثنائية من صورة من مصادر متعددة باستخدام JavaScript).
الوسائط المتعددة يمكن تضمين الفيديو والصوت من مصادر متعددة باستخدام العنصرَين <video> و<audio>.
نص برمجي يمكن تضمين النصوص البرمجية من مصادر متعددة. ومع ذلك، قد يتم حظر الوصول إلى واجهات برمجة تطبيقات معيّنة (مثل طلبات استرجاع البيانات من مصادر متعددة).

قائمة المهام: DevSite - تقييم التفكير والتحقّق

كيفية منع تمويه النقر

تمويه النقر
الشكل: يتم توضيح آلية تمويه النقر في 3 طبقات منفصلة (الموقع الأساسي، موقع إلكتروني مزوّد بإطار iframe، زر شفاف).

يشير هذا المصطلح إلى هجوم يُعرف باسم "تمويه النقر" تضمين موقع إلكتروني في iframe وعناصر مركّبة أزرار شفافة ترتبط بوجهة مختلفة. خداع المستخدمين إلى الاعتقاد بأنّهم يصلون إلى تطبيقك أثناء إرسال البيانات إلى المهاجمين.

لمنع مواقع إلكترونية أخرى من تضمين موقعك الإلكتروني في إطار iframe، يمكنك إضافة محتوى. سياسة أمان مع frame-ancestors إلى عناوين HTTP.

بدلاً من ذلك، يمكنك إضافة X-Frame-Options إلى عناوين HTTP التي يمكنك الاطّلاع عليها. MDN للاطّلاع على قائمة بالخيارات

الخاتمة

نأمل أن تكون مقتنعًا بقليل من أنّ المتصفحات تعمل بجدّ لتكون بمثابة بوابة حماية. من الأمان على الويب. تحاول المتصفّحات أن تكون آمنة من خلال حظر الوصول إلى الموارد، قد تحتاج أحيانًا إلى الوصول إلى موارد متعددة المصادر في التطبيقات. تعرَّف في الدليل التالي على معلومات حول مشاركة الموارد المتعدّدة المصادر. (CORS) وكيفية إبلاغ المتصفح بأن تحميل الموارد المشتركة المنشأ المسموح بها من مصادر موثوقة.