هل تدير موقعاً إلكترونياً وتتبع سياسة أمان محتوى (CSP) صارمة، لكنك تريد عرض إعلانات خارجية؟ هذا تحدٍ شائع، لكن لحسن الحظ، هناك طريقة للقيام بذلك دون إضعاف حماية موقعك الأساسية.

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

الحل الذكي هنا هو استخدام الإطارات المتداخلة (iframes). بدلاً من لصق كود الإعلان مباشرة في صفحة موقعك، ضعه في ملف منفصل خاص به. بعد ذلك، قم بتضمين هذا الملف المنفصل داخل «إطار متداخل» (iframe) في صفحتك الرئيسية. بهذه الطريقة، تحتاج سياسة CSP الخاصة بالمستند الرئيسي إلى السماح بتحميل الإطارات المتداخلة من موقعك فقط (`frame-src 'self'`). كل ما تحمله الإعلانات داخل الإطار المتداخل يصبح مشكلة «خاصة بها»، ولا يمكنه الوصول إلى محتوى موقعك الأساسي.

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

ومع ذلك، هناك «فخ» يجب الانتباه إليه، خاصة إذا كنت تستخدم خدمات مثل Cloudflare Workers Static Assets. عند محاولة تطبيق سياسة CSP أكثر تساهلاً على ملف الإعلان داخل الإطار المتداخل، قد تواجه مشكلة. قواعد الرؤوس (`_headers`) في Cloudflare (وغيرها من الخدمات المشابهة) «تدمج» السياسات بدلاً من «تجاوزها». هذا يعني أنه إذا كان موقعك الرئيسي يرسل سياسة CSP صارمة، وحاولت تطبيق سياسة متساهلة على مسار الإعلانات، فإن المتصفح سيطبق «تقاطع» السياستين، وهو في الواقع الأكثر صرامة. لذا، حتى مع محاولتك لسياسة أكثر تساهلاً للإعلان، ستبقى الإعلانات محظورة بسبب السياسة الأساسية الصارمة. نفس الشيء ينطبق على رؤوس مثل `X-Frame-Options`.

لذا، بينما يوفر استخدام الإطارات المتداخلة حلاً رائعاً لأمان موقعك، تأكد دائماً من فهم كيفية تعامل خادمك أو شبكة تسليم المحتوى (CDN) مع رؤوس HTTP المتعددة، لتجنب المفاجآت!