هل يمكن تضمين موقعك في موقع آخر؟
يخفي clickjacking صفحتك الحقيقية داخل إطار غير مرئي على موقع آخر، فينقر الزائر على أزرارك دون أن يدري. الصق عنوان URL لترى ما إذا كان بإمكان مواقع أخرى تضمينها في إطار، وما إذا كان ذلك يعرّض زوارك للخطر.
- X-Frame-Options
- CSP frame-ancestors
هذا هو عنوان URL محمّلًا داخل إطار في صفحتنا، تمامًا كما سيفعل المهاجم. إذا كنت ترى الصفحة، فبإمكان أي موقع فعل الشيء نفسه. وإذا ظهر في الإطار خطأ مثل "refused to connect"، فقد حظره متصفحك.
يستخدم هذا العنوان http العادي، والمتصفحات لا تحمّله داخل صفحة https، لذا يبقى الإطار فارغًا في كل الأحوال. اعتمد على حكم الترويسات أعلاه.
طريقة الإصلاح
أرسل Content-Security-Policy مع frame-ancestors، إضافة إلى X-Frame-Options للمتصفحات القديمة. أضف كليهما على خادم الويب الذي يقع أمام موقعك.
nginx
add_header Content-Security-Policy "frame-ancestors 'self'" always;
add_header X-Frame-Options "SAMEORIGIN" always;
Apache
Header always set Content-Security-Policy "frame-ancestors 'self'"
Header always set X-Frame-Options "SAMEORIGIN"
تستخدم Odoo؟ استخدم 'self' بدلًا من 'none'، فمحرر الموقع يعرض صفحاتك داخل إطار على النطاق نفسه. يفعّل CICDoo هذه الترويسات افتراضيًا في كل نسخة ينشرها.
كيف يعمل الهجوم
صفحتك، ونقرات غيرك
إطار غير مرئي
يحمّل المهاجم صفحتك الحقيقية في iframe شفاف ويضعها فوق طُعم، مثل زر جائزة أو مشغّل فيديو.
نقرة حقيقية
الزائر مسجّل الدخول إلى موقعك بالفعل. تقع نقرته على صفحتك: الموافقة على دفعة، أو تغيير بريد إلكتروني، أو منح صلاحية وصول.
ترويسة واحدة توقفه
تخبر frame-ancestors أو X-Frame-Options المتصفح بالمواقع المسموح لها بتضمينك في إطار. ومن دونها يسمح المتصفح للجميع.
الأسئلة الشائعة
إجابات عن أسئلتك
ماذا يفحص هذا الاختبار؟
نطلب عنوان URL من خادمنا ونقرأ ترويستين من الاستجابة: X-Frame-Options وتوجيه frame-ancestors في Content-Security-Policy. كما تحمّل الصفحة العنوان داخل إطار لترى النتيجة في متصفحك.
أي ترويسة يجب أن أستخدم؟
frame-ancestors هو المعيار الحديث وتكون له الأولوية متى وُجد. احتفظ أيضًا بـ X-Frame-Options للمتصفحات القديمة. استخدم 'self' للسماح لنطاقك فقط، أو 'none' لحظر أي إطار.
لماذا يبدو الإطار فارغًا؟
بعض المواقع تمنع التضمين، أو تعرض صفحة فارغة للزوار غير المعروفين، أو تستخدم http العادي الذي ترفض المتصفحات تحميله داخل صفحة https. أما حكم الترويسات فلا يعتمد على متصفحك.
هل موقعي معرّض للخطر إذا كان من الممكن تضمينه في إطار؟
ليس بالضرورة. يحتاج clickjacking إلى صفحة فيها إجراء مهم، مثل دفعة أو تغيير في الإعدادات، وزائر مسجّل الدخول، وملف تعريف ارتباط للجلسة يرسله المتصفح داخل إطار على موقع آخر. تحجب المتصفحات الحالية ملفات تعريف الارتباط التي لا تحمل SameSite=None، لذا تُحمَّل الصفحة المضمّنة عادةً دون تسجيل دخول. ومع ذلك تستحق الترويسات الإضافة: فهي تغلق الباب نهائيًا وتتحقق منها عمليات التدقيق الأمني.
هل ما زال ALLOW-FROM مدعومًا؟
لا. تتجاهل المتصفحات الحالية X-Frame-Options ALLOW-FROM. للسماح لمواقع شركاء محددة، أدرجها في frame-ancestors بدلًا من ذلك.
هل تحتفظون بعنوان URL؟
نحتفظ فقط بسجل للطلب لأغراض تحديد المعدل، وليس بعنوان URL أو النتيجة.
ترويسات أمان لن تحتاج إلى تذكّرها أبدًا.
يشغّل CICDoo نظام Odoo على خوادم تملكها، مع حماية من التضمين في الإطارات، وSSL، وتسجيل دخول بعاملين، ونسخ احتياطية، وفحص أمني يومي لكل نسخة.
لا رسوم لكل مستخدم. تبقى خوادمك ملكك.