إنّ سياسة المصدر نفسه هي ميزة أمان في المتصفّح تحدّ من المستندات والنصوص البرمجية على مصدر واحد يمكنها التفاعل مع الموارد على مصدر آخر.
يمكن للمتصفح تحميل الموارد وعرضها من مواقع متعددة في آنٍ واحد. قد يكون لديك أو يمكن فتح علامات تبويب متعددة في الوقت نفسه، أو يمكن لأحد المواقع تضمين إطارات 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 - تقييم التفكير والتحقّق
كيفية منع تمويه النقر
![تمويه النقر](https://web.developers.google.cn/static/articles/same-origin-policy/image/clickjacking-c47718a519b94.png?authuser=5&hl=ar)
يشير هذا المصطلح إلى هجوم يُعرف باسم "تمويه النقر" تضمين موقع إلكتروني في iframe
وعناصر مركّبة
أزرار شفافة ترتبط بوجهة مختلفة. خداع المستخدمين
إلى الاعتقاد بأنّهم يصلون إلى تطبيقك أثناء إرسال البيانات إلى
المهاجمين.
لمنع مواقع إلكترونية أخرى من تضمين موقعك الإلكتروني في إطار iframe، يمكنك إضافة محتوى.
سياسة أمان مع frame-ancestors
إلى عناوين HTTP.
بدلاً من ذلك، يمكنك إضافة X-Frame-Options
إلى عناوين HTTP التي يمكنك الاطّلاع عليها.
MDN
للاطّلاع على قائمة بالخيارات
الخاتمة
نأمل أن تكون مقتنعًا بقليل من أنّ المتصفحات تعمل بجدّ لتكون بمثابة بوابة حماية. من الأمان على الويب. تحاول المتصفّحات أن تكون آمنة من خلال حظر الوصول إلى الموارد، قد تحتاج أحيانًا إلى الوصول إلى موارد متعددة المصادر في التطبيقات. تعرَّف في الدليل التالي على معلومات حول مشاركة الموارد المتعدّدة المصادر. (CORS) وكيفية إبلاغ المتصفح بأن تحميل الموارد المشتركة المنشأ المسموح بها من مصادر موثوقة.