مقدمه
إن تطوير التطبيقات على الويب أصبح أمرًا حيويًا في عصرنا الرقمي المعاصر. ومع تزايد الاعتماد على تطبيقات الويب للأعمال والتفاعلات اليومية، يجب أن نكون دائمًا في حالة تأهب لمواجهة التهديدات الأمنية التي تتعرض لها هذه التطبيقات. واحدة من هذه التهديدات الشائنة هي "Clickjacking". في هذا المقال، سنتناول مفهوم Clickjacking، وسنتعرف على كيفية اختبار تطبيقات الويب للكشف عن هذا التهديد وحماية التطبيقات منه.
نبذة عن هجمة ClickJacking
هجمة clickjacking هي نوع من هجمات التصيد الاحتيالي التي تستغل ضعف المستخدمين في رؤية ما ينقرون عليه. في هذه الهجمة، يقوم المهاجم بإنشاء صفحة ويب تحتوي على عنصر مخفي، ثم يقوم بوضع هذه الصفحة فوق صفحة أخرى. عندما ينقر المستخدم على صفحة الويب العلوية، فإنه في الواقع ينقر على العنصر غير المرئي في الصفحة السفلية.
كيفية عمل هجمة ClickJacking
تعتمد هجمات ClickJacking على استخدام تقنية تسمى "إطارات" (iframes). تسمح إطارات HTML للمطورين بوضع صفحة ويب داخل صفحة ويب أخرى. يمكن استخدام إطارات لعرض محتوى من مواقع ويب أخرى، أو لإنشاء واجهة مستخدم معقدة.في هذه الهجمة ، يقوم المهاجم بإنشاء صفحة ويب تحتوي على عنصر مخفي، ثم يقوم بوضع هذه الصفحة داخل إطار. ثم يقوم المهاجم بوضع إطار الصفحة الخاصة به فوق صفحة ويب أخرى. عندما ينقر المستخدم على صفحة الويب العلوية، فإنه في الواقع ينقر على العنصر غير المرئي في الصفحة السفلية.
هجمة ClickJacking هي هجمة أمنية خطيرة يمكن استخدامها لسرقة المعلومات الشخصية أو تثبيت البرامج الضارة على جهاز المستخدم.
مثال عملي على هجمة ClickJacking
السيناريو:
يستخدم الضحية موقعًا على شبكة الإنترنت لتسجيل الدخول إلى حسابه المصرفي. يُظهر الموقع صفحة تسجيل دخول تحتوي على زر "تسجيل الدخول".
الهجمة:
يقوم المهاجم بإنشاء صفحة ويب ثانية تحتوي على زر "تسجيل الدخول" أيضًا. ومع ذلك، فإن هذا الزر غير مرئي للمستخدم. ثم يقوم المهاجم بإنشاء iframe ووضعه فوق صفحة تسجيل الدخول للبنك. يُظهر iframe الصفحة الثانية للمهاجم، مع زر "تسجيل الدخول" غير المرئي.
النتيجة:
عندما يحاول الضحية النقر على زر "تسجيل الدخول" على صفحة تسجيل الدخول للبنك، فإنه في الواقع ينقر على الزر غير المرئي على صفحة المهاجم. يؤدي هذا إلى قيام صفحة المهاجم بإجراء عملية تسجيل دخول إلى حساب البنك للمستخدم. يمكن للمهاجم بعد ذلك استخدام هذه المعلومات للوصول إلى حساب البنك وإجراء عمليات غير قانونية.
كيفية بناء هجوم Clickjacking
تستخدم هجمات clickjacking تقنية CSS لإنشاء طبقات وتعديلها. يقوم المهاجم بدمج موقع الويب المستهدف كطبقة iframe فوق موقع الويب الوهمي. فيما يلي مثال على استخدام علامة style والمعلمات:
<head>
<style>
#target_website {
position:relative;
width:128px;
height:128px;
opacity:0.00001;
z-index:2;
}
#decoy_website {
position:absolute;
width:300px;
height:400px;
z-index:1;
}
</style>
</head>
...
<body>
<div id="decoy_website">
...decoy web content here...
</div>
<iframe id="target_website" src="https://vulnerable-website.com">
</iframe>
</body>
يتم وضع طبقة iframe التي تحتوي على موقع الويب المستهدف في موضع نسبي مع عرض وارتفاع من 128 بكسل لكل منهما. يتم تعيين الشفافية على 0 بحيث تصبح الطبقة غير مرئية للمستخدم, و يتم تعيين z-index على 2 بحيث يتم وضع علامة iframe فوق موقع الويب الوهمي.
لمنع هجمات ClickJacking:
هناك عدة تقنيات أمنية يمكن استخدامها لمنع هجمات ClickJacking منها:
- استخدام ميزة Sandbox.
- استخدام ميزة X-Frame-Options.
- استخدام ميزة Content-Security-Policy.
Sandbox
ميزة Sandbox هي ميزة أمان في المتصفحات تسمح للمستخدمين بتقييد إمكانيات iframe.
لاستخدام ميزة Sandbox، يجب تعيين الخاصية "frameborder" على "0". يمكن القيام بذلك عن طريق إضافة الكود التالي إلى ملف HTML:
<iframe src="https://example.com" frameborder="0"></iframe>
X-Frame-Options
لمنع هجمات ClickJacking باستخدام ميزة X-Frame-Options، يجب على المطورين تعيين القيمة المناسبة للرأس HTTP X-Frame-Options.
تتوفر ثلاث قيم محتملة للرأس HTTP X-Frame-Options:
- DENY: يمنع المتصفح من عرض المحتوى في أي إطارات على الإطلاق.
- SAMEORIGIN: يمنع المتصفح من عرض المحتوى في إطارات من مصادر مختلفة.
- ALLOW-FROM: يسمح للمتصفح بعرض المحتوى في إطارات من المصدر المحدد.
# Apache
Header always set X-Frame-Options DENY
# Apache
Header always set X-Frame-Options SAMEORIGIN
# Apache
Header always set X-Frame-Options ALLOW-FROM https://example.com
# Nginx
add_header X-Frame-Options DENY
# Nginx
add_header X-Frame-Options SAMEORIGIN
# Nginx
add_header X-Frame-Options ALLOW-FROM https://example.com
Content-Security-Policy
ميزة Content-Security-Policy (CSP) هي ميزة توفر طبقة إضافية من الحماية ضد هجمات ClickJacking وهجمات التصيد الاحتيالي الأخرى.
يمكن للمطورين استخدام الخاصية frame-ancestors لتحديد مواقع الويب التي يمكن أن تحتوي على إطارات لمحتوى موقع الويب الخاص بهم.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Website</title>
<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self';">
</head>
<body>
<h1>This is my website</h1>
</body>
</html>
سيؤدي هذا إلى منع المتصفحات من عرض المحتوى الخاص بالموقع في إطارات من أي موقع ويب آخر,
ويمكنك تغيير 'self' الى اي موقع تثق به.
موقع ويب للتدرب على هجمة ClickJacking:
في ختام هذا المقال، نجد أن تطبيقات الويب تظل تحت تهديد Clickjacking المستمر. إلا أن التوعية والجهود المستمرة لاختبار أمان هذه التطبيقات يمكن أن تسهم في حمايتنا من هذا التهديد. إذا كنت تدير تطبيقًا على الويب أو تعمل في مجال أمان المعلومات، فإن فهم كيفية اختبار تطبيقات الويب للكشف عن Clickjacking سيكون أمرًا حيويًا للحفاظ على سلامة المستخدمين وأمان البيانات.