Clickjacking
خطف النقرات Clickjacking
Clickjacking تخدع المستخدم للنقر على عنصر مخفي بإطار (iframe) شفاف فوق موقعك، بينما يظنّ أنه ينقر على واجهتك الظاهرة — تُستغلّ لتنفيذ إجراءات لم يقصدها.
المهاجم يضع موقعك الحقيقي داخل iframe شفاف فوق صفحة يتحكّم بها، ويرتّب الأزرار بحيث يظنّ الزائر أنه ينقر عنصرًا من صفحة المهاجم بينما نقرته تصل فعليًّا لموقعك المخفي تحته — مثل زرّ "تابعنا" ظاهر بينما زرّ "احذف حسابي" الحقيقي مختفٍ تحته بالضبط.
يختلف عن XSS وCSRF بأنه لا يحقن كودًا ولا يزوّر طلبًا مباشرة — يخدع **العين** فقط، لذا الدفاع منه على مستوى المتصفّح لا التحقّق من المدخلات.
الصياغة
Content-Security-Policy: frame-ancestors 'none';
📄 مثال
// ترويسة تمنع تضمين صفحتك داخل أي إطار خارجي
response.setHeader(
"Content-Security-Policy",
"frame-ancestors 'self'" // اسمح بالتضمين من نفس نطاقك فقط
);
// أو الترويسة الأقدم المكافئة
response.setHeader("X-Frame-Options", "SAMEORIGIN");أهم النقاط
| النقطة | الوظيفة |
|---|---|
| frame-ancestors 'none' | يمنع تضمين الصفحة داخل أي إطار من أي موقع |
| frame-ancestors 'self' | يسمح بالتضمين من نفس نطاقك فقط |
| X-Frame-Options | ترويسة أقدم بنفس الغرض، أقلّ مرونة من CSP frame-ancestors |
💡 نصائح عملية
- طبّق كلا الترويستين معًا (CSP وX-Frame-Options) لدعم متصفّحات أقدم قد لا تفهم frame-ancestors
⚠️ أخطاء شائعة
- الاعتماد على سكربت JavaScript لكسر الإطار (frame-busting) بدل ترويسة خادم — يمكن تعطيله بسهولة من جهة المهاجم
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CYBERSECURITY الكامل بالعربي.