ستنتهي الفترة التجريبية لإيقاف ميزة الوصول إلى الشبكة الخاصة (PNA) للسياقات غير الآمنة، لذا يجب تنفيذ طلب إذن PNA

Yifan Luo
Yifan Luo

يتضمّن Chrome 124 ميزة إذن الوصول إلى الشبكة الخاصة. تتوفّر فترة تجريبية قيد الإيقاف النهائي للمواقع الإلكترونية التي تحتاج إلى مزيد من الوقت للاستعداد لهذا التغيير، ولكن ستنتهي هذه الفترة التجريبية مع الإصدار 126 من Chrome ومن المتوقّع إرساله في 4 أيلول (سبتمبر) 2024. تشرح هذه المشاركة التغيير، وتقدّم مزيدًا من المعلومات حول تصميم الميزة، وكيفية ترحيل مواقع الويب الحالية، وكيفية اختبار عملية التنفيذ.

التغيير المرتقَب

لإجراء اتصالات بالأجهزة على شبكة خاصة ليس لها أسماء فريدة عالميًا، وبالتالي لا يمكنها الحصول على شهادات بروتوكول أمان طبقة النقل (TLS)، توفّر هذه الميزة خيارًا جديدًا لـ fetch() لتوضيح نية المطوّرين في التواصل مع هذا الجهاز. ويشمل ذلك ميزة جديدة يتم التحكّم فيها من خلال السياسة لحظر وصول كل موقع إلكتروني إلى هذه الإمكانية، وعناوين جديدة لاستجابة الخادم قبل إرسال الطلبات لتوفير بيانات وصفية إضافية.

ما المقصود بالوصول إلى الشبكة الخاصة؟

الوصول إلى الشبكة الخاصة (PNA، المعروف سابقًا باسم CORS-RFC1918 واختصاره باسم "الوصول إلى الشبكة المحلية") هو ميزة أمان تحدّ من قدرة المواقع الإلكترونية على إرسال الطلبات إلى الخوادم على الشبكات الخاصة. يساعد ذلك في حماية المستخدمين والشبكات الداخلية من الهجمات المحتملة، مثل تزوير الطلبات على مواقع مختلفة (CSRF). يطبّق Chrome بشكل تدريجي حملة PNA، وسيتم توسيع نطاق الحماية في الإصدارات القادمة.

ما هي أهمية طلب الحصول على إذن؟

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

لمواجهة هذا التحدي، تمت إضافة طلب إذن جديد ضمن تجربة المصدر من Chrome 120، وفي الإصدار الثابت من Chrome 124.

متى يجب طلب الحصول على إذن؟

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

في ما يلي خطوات سير العمل المعتادة لطلب الوصول إلى الشبكة الخاصة مع طلب الإذن.

تشغيل طلب الإذن

أضِف السمة targetAddressSpace الجديدة كخيار جلب، ومن ثمَّ يمكن للطلب تخطّي عملية التحقق من المحتوى المختلط.

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

وفقًا لميزة الوصول إلى الشبكة الخاصة: تقديم طلبات مسبقة، يكون أي طلب شبكة خاص مسبوقًا بطلب مبدئي. سيشتمل طلب الإعداد المسبق هذا على عنوان جديد، Access-Control-Request-Private-Network: true، ويجب أن تتضمّن الاستجابة المقابلة العنوان Access-Control-Allow-Private-Network: true.

لاستيعاب طلب الأذونات الجديدة، يجب أن تتضمّن الأجهزة عنوانَي استجابة جديدَين: Private-Network-Access-Name وPrivate-Network-Access-ID.

  • Private-Network-Access-ID: قيمة 48 بت يتم تقديمها على شكل 6 بايت سداسي عشري مفصولة بنقطتين.
  • Private-Network-Access-Name: اسم صالح كسلسلة يتطابق مع التعبير العادي ECMAScript /^[a-z0-9_-.]+$/. الحدّ الأقصى لطول الاسم هو 248 وحدة رمز UTF-8.
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

عرض توضيحي

يمكنك الاطّلاع على العرض التوضيحي على الرابط: https://private-network-access-permission-test.glitch.me/.

تحتاج إلى بدء خادمك الشخصي الخاص لاستخدام الموقع الإلكتروني التجريبي. يجب أن يستجيب الخادم الخاص باستخدام عنوان HTTP Access-Control-Allow-Private-Network: true، بالإضافة إلى العنوانَين Private-Network-Access-ID وPrivate-Network-Access-Name المحدّدَين للخادم. إذا تم ضبط كل شيء بشكل صحيح، فيجب عرض مطالبة الإذن التالية:

الخروج من الفترة التجريبية التي تم إيقافها نهائيًا بسبب سياق غير آمن

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

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

ننصحك أيضًا بحذف الرمز المميّز في صفحة الفترة التجريبية.

ما هي الخطوات التالية؟

لا يزال حل الطلبات الواردة من واجهة برمجة التطبيقات fetch() غير التابع لواجهة برمجة التطبيقات قيد الاستكشاف.

تم اختبار العديد من الحلول، على سبيل المثال، الاستعانة بمشغِّلي الخدمات أو جعل مساحة العنوان المستهدف بمثابة سياسة أمان محتوى جديدة. ومع ذلك، لا يزال الشكل النهائي للطلبات الواردة من خارج واجهة برمجة التطبيقات fetch() قيد التحقيق.

قد تتم إتاحة الطلبات من الإطارات الفرعية بسياسة الأذونات في المستقبل.

قد نرغب في المستقبل في إتاحة سياسات الأذونات لتخفيف إمكانية استخدام الإطارات الفرعية.

ملاحظات في حالات استخدام الشبكة الخاصة

إذا كنت تستضيف موقع ويب على شبكة خاصة يحتاج إلى طلبات من الشبكات العامة، فإن فريق Chrome يريد الحصول على ملاحظاتك! يُرجى الإبلاغ عن مشكلة في أداة تتبُّع مشاكل Chromium (المكوِّن: Blink>SecurityFeature>CORS>PrivateNetworkAccess) أو مستودع GitHub.

المراجع