
کلیک جکینگ (Clickjacking) چیست؟
کلیک جکینگ (Clickjacking) یک حمله است که کاربران رو فریب میده تا فکر کنن روی یک چیز کلیک میکنن، در حالی که در واقع روی چیز دیگه ای کلیک میکنن. اگر علاقمند به حوزه هک و امنیت هستین در این مقاله با ما همراه باشین.
نام دیگه این حمله “دستکاری رابط کاربری (UI Redressing)” هست که بهتر توضیح میده چه اتفاقی داره میفته.
کاربران فکر میکنن دارن از رابط کاربری عادی یک صفحه وب استفاده میکنن، اما در حقیقت، یک رابط کاربری مخفی کنترل رو در دست داره. به عبارت دیگه، رابط کاربری تغییر شکل داده شده. وقتی کاربران روی چیزی که به نظرشون امنه کلیک میکنن، اون رابط کاربری مخفی یک عمل متفاوت رو اجرا میکنه.
حمله کلیک جکینگ (Clickjacking) به لطف قاب های HTML (iframes) ممکن میشه، یعنی قابلیتی که به صفحات وب اجازه میده داخل صفحات دیگه نمایش داده بشن. اگه یک صفحه وب اجازه بده که داخل یک فریم نمایش داده بشه، مهاجم میتونه صفحه اصلی رو با یک لایهی مخفی و شفاف که شامل جاوا اسکریپت و عناصر رابط کاربری خودش هست، بپوشونه.
بعد، مهاجم کاربران رو فریب میده تا وارد صفحه مخرب بشن، صفحه ای که دقیقا شبیه سایتی هست که کاربران بهش اعتماد دارن. هیچ نشونه ای وجود نداره که یک رابط کاربری مخفی روی سایت اصلی قرار گرفته. کاربران روی یک لینک یا دکمه کلیک میکنن و انتظار دارن که یک عملکرد مشخص از سایت اصلی انجام بشه، اما در عوض، اسکریپت مهاجم اجرا میشه. البته، اسکریپت مهاجم میتونه همزمان اون عملکرد مورد انتظار رو هم اجرا کنه تا کاربر متوجه نشه که اتفاقی افتاده.
خود کلیک جکینگ (Clickjacking) هدف نهایی حمله نیست؛ بلکه فقط یک روش برای اجرای حمله ای دیگهست که باعث میشه کاربران فکر کنن در حال انجام یک کار امن هستن. حملهی اصلی میتونه شامل هر چیزی باشه که از طریق صفحات وب ممکنه، از اقدامات مخرب مثل نصب بدافزار یا دزدیدن اطلاعات ورود گرفته تا کارهای به ظاهر بیضرر مثل افزایش تعداد کلیک در سایت های دیگه، افزایش درآمد تبلیغاتی، بالا بردن تعداد لایک های فیس بوک یا افزایش بازدید ویدیوهای یوتیوب.
آیا راهی برای مقابله با کلیک جکینگ (Clickjacking) وجود داره؟
هیچ دفاع کاملی در برابر کلیک جکینگ وجود نداره، اما اقداماتی هست که میتونه خطر رو کاهش بده.
در سمت کاربر، غیرفعال کردن جاوا اسکریپت میتونه موثر باشه، اما از اونجایی که بسیاری از سایت ها به جاوا اسکریپت وابسته هستن، خاموش کردنش باعث میشه بعضی از سایت ها غیرقابل استفاده بشن. برخی محصولات تجاری وجود دارن که سعی میکنن از کاربران محافظت کنن بدون اینکه عملکرد واقعی iframe ها رو مختل کنن. این روش برای سازمان ها که میتونن این محصولات رو روی سیستم های کارمندانشون نصب کنن، مفیده، اما مشتریانی که از وب سایت های سازمان استفاده میکنن، همچنان در معرض خطر هستن.
X-Frame-Options چیه؟
یکی از راه های مقابله با کلیک جکینگ، استفاده از هدر HTTP به نام X-Frame-Options هست. این هدر به اپلیکیشن اجازه میده که مشخص کنه آیا استفاده از فریم ها مجازه یا نه.
- DENY استفاده از فریم ها رو به طور کامل مسدود میکنه
- SAMEORIGIN فقط اجازه میده که فریم ها از همون دامنه لود بشن
- ALLOW-FROM به یک دامنه خاص اجازه میده که صفحه رو داخل فریم نمایش بده
آخرین و مدرنترین روش برای مقابله با کلیک جکینگ (Clickjacking) استفاده از Content Security Policy (CSP) و دستور frame-ancestors هست. این دستور به توسعه دهنده اپلیکیشن اجازه میده که استفاده از فریم ها رو به طور کامل غیرفعال کنه یا فقط در دامنه های خاصی مجاز کنه، مشابه X-Frame-Options.
CSP در همه مرورگرها پشتیبانی نمیشه و بعضی از افزونه ها و پلاگین های مرورگر ممکنه این سیاست رو دور بزنن. اگه همزمان از هدر X-Frame-Options و CSP frame-ancestors استفاده بشه، مرورگرها اصولا باید به CSP اولویت بدن، اما همه این کار رو انجام نمیدن.
تنظیمات ممکن برای CSP frame-ancestors:
Content-Security-Policy: frame-ancestors ‘none’
Content-Security-Policy: frame-ancestors ‘self’
Content-Security-Policy: frame-ancestors example.com
چون هیچ کدوم از این روش ها کامل و بی نقص نیستن، استفاده از دفاع چندلایهای (Defense-in-Depth) یک روش مناسب به حساب میاد و هیچ مشکلی نداره که از هر سه روش به طور همزمان روی وب سایت خودتون استفاده کنید.
اگر این مطلب براتون مفید بود، نظراتتون رو با ما به اشتراک بگذارین.