VPN متصل لكن المحتوى المختلط ما زال محجوباً: ما يجب إصلاحه
رتّب عنوان URL المحجوب بحسب من أنتجه، وأصلح الإشارة أو سلّمها إلى مالك المضيف، ثم أكّد الإصلاح من وحدة تحكم المتصفح.
يُعرض نصف الصفحة، وتبقى ورقة أنماط واحدة باهتة في لوحة الشبكة، بينما يظل عميل VPN يبلّغ عن نفق سليم. الملاحظات الثلاث صحيحة في الوقت نفسه، لأن المتصفح حكم على طلب أنشأته الصفحة ولم يكن للنفق صوت في ذلك الحكم. ما يغلق الحالة قرار لا إعداد: إصلاح الإشارة، أو تصعيدها إلى مالك المضيف، أو التخلي عن الاعتماد. لكل خيار من هذه الخيارات اختبار رخيص، واختيار الخاطئ يستهلك دورة دعم.
لماذا لا يستطيع النفق تغطية مورد فرعي
يبدأ المحتوى المختلط بـ مستند HTTPS يطلب مورداً فرعياً عبر HTTP العادي. يُحكم على كل عنوان URL وفق مخططه الخاص، لذلك لا تمتد حماية المستند الأصل إلى الطلب الفرعي أبداً. التشفير المضاف أسفل المتصفح يغيّر ما يمر على السلك، لا http:// الذي طلبته العلامات.
تصنّف المتصفحات الحالية هذه الطلبات في مجموعتين وتتعامل معها بشكل مختلف. تُرفض النصوص البرمجية وأوراق الأنماط وإطارات iframe والاستدعاءات عبر fetch أو XMLHttpRequest أو WebSocket رفضاً قاطعاً، دون أي محاولة ترقية مسبقة. تُعاد كتابة الصور والصوت والفيديو إلى https:// وتُطلب مرة أخرى، ويُهجر التحميل عندما يفشل ذلك الجلب الآمن. عنوان URL لمورد فرعي يكون مضيفه عنوان IP مجرداً معفى من الترقية، لذا تبقى صورة HTTP على مضيف IP محجوبة بدل أن تُصلح بصمت. هذا التقسيم، بما فيه ذلك الاستثناء على الجانب القابل للترقية، موثّق في دليل Mozilla عن المحتوى المختلط. يطبّق Chrome رفضاً مشابهاً على التنزيلات غير الآمنة التي تبدأ من صفحة آمنة، ولهذا قد يموت رابط PDF بينما تبدو الصفحة المحيطة سليمة.
فالسطر الباهت دليل على أن الضبط يعمل، لا دليل على أن النفق سرّب نصاً صريحاً. تعامل مع السطر كاكتشاف يشير إلى إشارة واحدة لا إلى الصفحة كلها.
حدّد من يملك الإشارة غير الآمنة
رتّب عنوان URL المخالف بحسب مكان إنتاجه قبل أن تغيّر أي شيء. تحدد تلك الإجابة ما إذا كان بإمكانك إصدار إصلاح اليوم، أو كان على مورّد إصدار واحد، أو كان على الاعتماد مغادرة الصفحة. اقرأها من عمود Initiator في لوحة الشبكة، لأن العلامات المعروضة تُجمّع غالباً وقت التشغيل.
| من أين يأتي عنوان URL | من يستطيع إصلاحه | الخطوة الأولى |
|---|---|---|
| مضمّن مباشرة في قالب أو جزء تُطلقه | أنت | استبدله بصيغة https:// ثم أفرغ ذاكرة التخزين المؤقت |
| محقون من مدير وسوم أو حزمة مورّد | المورّد، مع تذكرتك | أرسل عنوان URL الدقيق ونوع الطلب وسطر وحدة التحكم |
| يُقدَّم فقط على المنفذ 80 دون مستمع TLS | مالك المضيف | اطلب TLS، أو ضع أمامه شيئاً تديره أنت، أو تخلى عنه |
عندما يستجيب المضيف بالفعل على 443 ولا يقول http إلا الإشارة، يكون الإصلاح محلياً: غيّر الإشارة، وأفرغ ذاكرة التخزين المؤقت للصفحة، وأكّد أن السطر أصبح https. لا يمكن جعل مضيف يستمع على المنفذ 80 فقط مطابقاً بالتحرير، لذا ينتقل المورد، أو يوضع أمامه شيء تديره أنت، أو يختفي. يظل عنوان URL المحقون من مدير وسوم يظهر حتى حين يكون قالبك نظيفاً، وتلك الحالة تنتمي إلى تذكرة مع عنوان URL الدقيق وسطر وحدة التحكم مرفقين. إخبار الموظفين بالسماح بالمحتوى غير الآمن ليس أحد هذه الخيارات، لأنه يوقف الفحص لكل موقع يزوره ذلك الملف التعريفي للمتصفح.
أصلح الإشارة لا إعداد المتصفح
أعد تحميل المسار الفاشل مع الاحتفاظ بسجل الشبكة، ورشّح اللوحة بحسب المضيف الذي تشك فيه. تسمّي وحدة التحكم عنوان URL والتوجيه، وهذا يحسم ما إذا رُفض الطلب أو رُقّي قبل أن تلمس قالباً.
curl -sSI https://cdn.example.org/vendor.js | head -n 1
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' -L https://cdn.example.org/vendor.jsثمة ضابطان مساندان يجدر معرفتهما، ولا يحل أي منهما محل الإصلاح. رأس Content-Security-Policy مع upgrade-insecure-requests يجعل المتصفح يعيد كتابة عناوين URL للموارد الفرعية http قبل أن تغادر الصفحة، وهذا يلتقط إشارات قديمة لم تجدها بعد. يظل الطلب المعاد كتابته يفشل عندما لا يقدّم المضيف الهدف HTTPS، لذا لا يغيّر الرأس إلا أي عنوان URL يحاوله المتصفح. يعمل HSTS لكل مضيف، أي أن سياسة على نطاقك لا تفعل شيئاً لشبكة CDN لطرف ثالث لم ترسل الرأس قط. بعد تعديل القالب، أفرغ ذاكرة التخزين المؤقت للصفحة وابحث في HTML المعروض عن اسم المضيف القديم، لأن عنوان URL نفسه قد يأتي أيضاً عبر جزء أو سلسلة ترجمة أو حقل قاعدة بيانات.
تابع عمليات إعادة التوجيه أيضاً، لأن سلسلة تبدأ بـ https:// قد تهبط في موقع http:// والمتصفح يحكم على القفزة الأخيرة. صيغة -L الأمر الثاني أعلاه تطبع عنوان URL الفعلي ذاك لك. إذا كانت القفزة الأخيرة http صرفاً، فالإشارة ما زالت خاطئة حتى لو بدا الرابط الذي حرّرته سليماً.
أكّد الصفحة بوحدة التحكم ولوحة الشبكة
أعد التحميل مع تعطيل ذاكرة التخزين المؤقت وامشِ المسار مرة أخرى، بما في ذلك الأزرار التي تحمّل المحتوى عند الطلب. تحجب أول عملية تحميل للصفحة الأدوات الكسولة وبلاطات الخريطة ونصوص المشغل التي لا تظهر إلا بعد نقرة. ينبغي ألا تحمل وحدة التحكم أي مدخلات محتوى مختلط، وينبغي أن يُظهر كل سطر لمسته https. التقط وحدة التحكم وسطر الطلب قبل إغلاق التذكرة، لأن تلك الحالة يصعب إعادة بنائها بعد النشر التالي.
عندما يعود المورد لشخص آخر، أرسل أربعة أشياء: عنوان URL الدقيق ونوع الطلب ونص وحدة التحكم والصفحة التي يظهر فيها. اخفِ معرّفات الجلسة في كل ما تلصقه في تذكرة. التقرير الذي يقول فقط إن الصور معطوبة لا يمنح المالك شيئاً يبحث عنه.
يواصل النفق أداء عمله بينما يكمن الإصلاح في الإشارة التي أنتجت الطلب. بعد النشر، ابحث عن اسم المضيف مرة أخرى في القالب وحزمة المورّد، وأغلق الحالة فقط عندما لا يبقى أي مدخل محتوى مختلط محجوب في وحدة التحكم.