العربية

الفيديو والترجمات · تنزيل الوسائط المباشرة

تاريخ قصير لسياسة المصدر نفسه وCORS في متصفحات الويب

· خلفية

كورس سجل الويب حماية

تطورت أصول المتصفح المبكرة إلى الوصول عبر الأصل الخاضع للرقابة HTTP
الرسم التوضيحي المتجه الأصلي ToolAcre

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

لماذا يرفض المتصفح تسليم علامة التبويب الخاصة بك وحدات البايت التي تلقاها للتو - التأثير اليومي لقاعدة عمرها عقود من الزمن

يمكن للمتصفح عرض ملف بعيد ولكنه يرفض إعطاء نص الاستجابة هذا للصفحة JavaScript. التناقض الواضح هو الفصل الأمني ​​بين التنقل والقراءة البرمجية عبر الأصل.

يواجه Direct Media Downloader القاعدة لأنه يجب عليه قراءة الأجزاء في Blob. يمكن أن يعمل رابط الحفظ الأصلي في حالة فشل الجلب نظرًا لأنه يتبع مسارًا مختلفًا للمتصفح. يؤدي الرفض إلى حماية ملفات تعريف الارتباط وموارد الإنترانت في أي مكان آخر في المتصفح، على الرغم من أن برنامج التنزيل هذا يحذف عمدًا بيانات الاعتماد من مكالماته الخاصة. تحمي الحدود ملفات تعريف الارتباط وصفحات الإنترانت غير ذات الصلة في نفس المتصفح على الرغم من أن هذا الطلب المحدد يحذف بيانات الاعتماد.

Netscape وJavaScript وقاعدة الأصل الأول - المشكلة الأمنية التي دفعت إلى اتباع سياسة نفس الأصل

جعلت البرمجة النصية المبكرة للويب من الضروري منع أحد المواقع من قراءة الصفحات الحساسة لموقع آخر من خلال الوصول المحيط للزائر. نظمت المتصفحات تلك الحدود حول الأصول.

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

XMLHttpRequest والويب المغلق - كيف ورثت الطلبات المكتوبة القاعدة ولماذا واجهت عمليات المزج صعوبات

تعمل الخلفية XMLHttpRequest HTTP مع الاحتفاظ بقيود الأصل. وهذا ما يجعل تطبيقات الموقع نفسه مفيدة بينما تتطلب عمليات المزج عبر المواقع التعاون أو وسطاء الخادم.

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

معيار CORS — كيف تتيح رؤوس التحكم في الوصول للخادم الاشتراك في القراءة عبر الأصل دون تخفيف الإعداد الافتراضي

يوفر CORS هذا التعاون من خلال HTTP رؤوس الاستجابة التي تفسرها المتصفحات. يمكن لـ `Access-Control-Allow-Origin` أن يأذن بمصدر الطلب أو، في الحالات المناسبة الخالية من بيانات الاعتماد، جمهورًا أوسع.

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

الاختبارات المبدئية والطلبات البسيطة والاستجابات المبهمة - المفردات التي تفسر معظم حالات فشل التنزيل

بعض الطلبات عبر الأصل بسيطة بما يكفي بحيث لا تتطلب اختبارًا مبدئيًا؛ يرسل الآخرون أولاً OPTIONS للسؤال عما إذا كان الأسلوب والرؤوس مسموحًا بها. الاختبار المبدئي هو تفاوض، وليس نقل الوسائط الفعلي.

تنشأ الاستجابات غير الشفافة من وضع no-cors وتخفي الحالة والرؤوس والنص من البرنامج النصي. ToolAcre لا يحدد هذا الوضع لأن النص غير القابل للقراءة لا يمكن أن يصبح كائن Blob المقصود القابل للحفظ. قد يتواجد خطأ CORS مع طلب ناجح من جانب الخادم، مما يعزز السبب في أن فشل التطبيق لا يعني أن الأصل لم يتلق أي شيء. يمكن لقرارات الاختبار المبدئي المخزنة مؤقتًا تغيير ما يظهر في أثر واحد دافئ، لذا فإن الغياب التاريخي لـ OPTIONS ليس دليلاً على عدم وجود التفاوض على الإطلاق.

ما يعنيه CORS بالنسبة لبرنامج التنزيل عبر المتصفح فقط - المضيف هو الذي يقرر، ولا يمكن للأداة تجاوزه، والصدق بشأن ذلك هو الرد الصحيح

بالنسبة لبرنامج التنزيل هذا، يقرر المضيف ما إذا كانت الاستجابات HEAD وGET قابلة للقراءة. لا يمكن لـ ToolAcre إرفاق رأس استجابة السماح بالأصل نيابة عن المضيف، ولن يقوم بترحيل النص من خلال أصله الخاص.

يجمع الخطأ بين CORS وإمكانيات الشبكة لأن ميزة Fetch تحجب المعلومات الدقيقة عن عمد في بعض حالات الفشل. قد تكشف أدوات DevTools للزائر أكثر مما يتلقاه رمز التطبيق. يجب على مشغلي المضيف ترخيص الأصول والأساليب والرؤوس المقصودة فقط ثم التحقق من استجابات الإنتاج الدقيقة الخاصة بهم بدلاً من الاعتماد على نية التكوين المحلي. قد تتواجد القراءة المحظورة مع الخادم الذي تلقى الطلب، ولهذا السبب لا تساوي الواجهة أبدًا فشل التطبيق مع عدم وجود اتصال.

الوجبات الجاهزة: قاعدة تحميك حتى عندما تزعجك - كيف يعمل برنامج Direct Media Downloader داخلها وليس حولها

تحمي القاعدة المستخدمين حتى عندما تحبط عملية نقل الملفات بشكل قانوني. يمكن للمضيف الذي يريد أن تقرأ تطبيقات المتصفح الوسائط العامة تكوين استجابات CORS المناسبة؛ واحد لا يظل غير قابل للوصول من خلال مسار البرنامج النصي هذا.

يعمل برنامج Direct Media Downloader ضمن هذا النموذج: التحقق محليًا، والطلب بشكل مفتوح، وشرح الرفض، واقتراح الحفظ الأصلي حيثما كان ذلك مناسبًا. ولا يحول حدود أمان المتصفح إلى مشكلة تجاوز. إن فهم هذا التاريخ يحول الخطأ الناتج عن العداء التعسفي للمتصفح إلى نتيجة مرئية لنموذج القراءة عبر المواقع الذي يتم رفضه افتراضيًا. يجب على مالكي الأصل اختبار رؤوس الإنتاج الدقيقة للطرق المقصودة بدلاً من الاعتماد فقط على تكوين لوحة المعلومات.