تعاریف مختلفی برای حملات XSS وجود داره که، همگی در چند موضوع مهم باهم، همخوانی دارن.
-
XSS یا Cross-site scripting، نوعی از حملات سایبریه که دامنه ی رخداد اون،برنامه های تحت وب و به طور کلی صفحات پویای وب رو در بر میگیره. یعنی یه صفحه ی ایستای نوشته شده با HTML تنها، زمینه ی لازم برای چنین حملاتی رو نداره.
-
در XSS، طعمه خود کاربره و نه اون برنامه ی تحت وب
-
وب سرور و پایگاه داده ی اون، "ابزار" هکر هستن و نه "هدف" حمله ی اون.
سوال اینجاس که در عمل، سناریوی XSS چیه؟
یک هکر،یه وب پویایی رو پیدا کرده که، موتور جستجوگرش نسبت به ورودی هایی که می گیره، فیلتر و صافی مناسبی نداره؛ حالا کافیه که یه اسکریپت مخرب رو به عنوان ورودی در فیلد جستجو وارد کنه. در این صورت این اسکریپت در پایگاه داده ی سرور وبسایت ذخیره می شه.
این یعنی هر کس دیگه ای هم که از این فیلد برای جستجو استفاده کنه، اسکریپت مخرب در فضای مرورگرش اجرا میشه. مثلا این اکسپلویت می تونه برای ذخیره ی کوکی های کاربرها باشه یا مثلا این که اونا رو به سایت دیگه منتقل کنه.
یکی از شایع ترین و البته مخرب ترین حملات سایبری عصر حاضر همین Cross-site scripting هست. سناریوی بالا، تنها یه مثال ساده از این نوع حملات بود.
حالا راه حل چیه؟
برای مقابله با چنین حملاتی، طیف گسترده ای از راهکارا رو باید بکار بگیریم؛توجه داریم که، همه ی سناریو های ما، جنبه ی پیشگیرانه داره (در این حمله، ما دفاع نمی کنیم؛ چراکه برنامه ی دفاعی کاملا مشخصه.):
-
مثلا اگر برای یه وب وردپرسی می خوایم در امان باشیم، باید سناریوی ما، فایل های سیستمی وردپرس رو به خوبی محافظت کنه؛ از افزونه های نا امن استفاده نکنیم و البته، سایر افزونه ها رو بروز نگه داریم.
-
از بسته ی HTMLPurifier برای استاندارد کردن و کنترل خروجی ها استفاده کنیم.
-
از شرکت های معتبر امنیتی (که در ایران متاسفانه کم تر پیدا می شن) بخوایم وبسایت ما رو در این باره، پویش کنن.
-
در نوشتن اسکریپت های پی اچ پی، فیلتر های مناسب رو بر روی ورودی های کاربران اعمال کنیم.
-
با معماری MVC تحت یه موتور قالب مناسب، وبمون رو پیاده کنیم.
هنوز راه حل ها، یا به عبارت دیگه، راه های پیشگیری دیگه ای هم وجود داره اما اونچه که پایه ی همه ی اوناس اینه که، کنترل مناسبی روی ورودی های کاربرا داشته باشیم، کوکی های اونا رو حفظ کنیم تا امنیت کاربرای ما، برقرار بشه. (چرا که طعمه ی این حملات، کاربرا هستن.)
بقیه اش دیگه بستگی به سواد کاربرا داره؛ مثلا استفاده ی آگاهانه از افزونه های شبیه به NoScript، بروز نگه داشتن مرورگرشون و ... می تونه اونا رو در امان نگه داره.
برای آرمایش وب سایت ها و برنامه های تحت وب هم، می تونیم این راه ها رو پیگیری کنیم:
-
استفاده از افزونه های مثه XSS Me و RightClickXSS برای مرورگرای خانواده ی موزیلا
-
بهره گیری از پویشگرای تحت وب شرکت های معتبر
اصولا آزمایش وب های پویا برای چنین آسیب پذیری هایی، روش های مختلفی داره که همشون بستگی به مدل حملات XSS داره.