اسکریپت بین سایتی (XSS): چیست و چگونه می توان آن را برطرف کرد؟
اسکریپت بین سایتی (XSS): چیست و چگونه می توان آن را برطرف کرد؟
به عنوان یکی از رایج ترین تهدیدات امنیت سایبری، برنامه نویسی متقابل سایت (XSS) تقریباً 75% از شرکت های بزرگ در سال 2019. علاوه بر این، تقریباً 40 درصد از تمام حملات سایبری برای هدف قرار دادن آسیب پذیری های XSS انجام شد.
اسکریپتنویسی متقابل سایتهایی را تحت تأثیر قرار داده است که توسط غولهای وب مانند eBay، Google، Facebook و Twitter اجرا میشوند. اما اسکریپت بین سایتی یک تهدید سایبری جدید نیست. در واقع، حملات XSS تقریباً از زمان ظهور خود وب وجود داشته است.
برای کمک به شما در جلوگیری از حملات XSS، این راهنما بر هر چیزی که باید در مورد اسکریپت بین سایتی بدانید تمرکز دارد. پس از خواندن این راهنما، ایده بهتری در مورد نحوه کار اسکریپت نویسی بین سایتی و نحوه ایمن سازی وب سایت وردپرس خود خواهید داشت.
اسکریپت بین سایتی (XSS) چیست؟
اسکریپت بین سایتی (XSS) به نوع حملات سایبری اشاره دارد که در آن اسکریپت های مخرب به وب سایت های معتبر و قابل اعتماد تزریق می شوند.
حملات اسکریپت بین سایتی در HTML، Flash، ActiveX و CSS امکان پذیر است. با این حال، جاوا اسکریپت رایجترین هدف مجرمان سایبری است، زیرا برای بیشترین تجربههای مرور، اساسی است.
جاوا اسکریپت یک زبان برنامه نویسی است که به شما امکان می دهد ویژگی های پیچیده ای را در وب سایت خود پیاده سازی کنید. اکثر وب سایت های موجود در وب که بزرگ و تعاملی هستند با جاوا اسکریپت ساخته شده اند. Domantas Gudeliauskas مدیر بازاریابی برای Zyro.
جاوا اسکریپت در میان جامعه وب بسیار محبوب است زیرا به شما امکان می دهد تقریباً هر کاری را در یک صفحه وب انجام دهید. و آن وقت است که مشکل ساز می شود. مجرمان سایبری می توانند از جاوا اسکریپت برای ورود به پشت صفحات وب و درج اسکریپت های مخرب استفاده کنند.
اسکریپت بین سایتی چگونه کار می کند؟
دو روش وجود دارد که مجرمان سایبری حملات XSS را در وب سایت های وردپرس انجام دهند. آنها میتوانند از ورودی کاربر سوء استفاده کنند یا از سیاستهای مبدا یکسان عبور کنند. بیایید نگاهی به هر دو روش برای درک بیشتر اسکریپت بین سایتی بیندازیم.
دستکاری ورودی کاربر
متداولترین روشی که مجرمان سایبری حملات XSS را انجام میدهند، بهرهبرداری از ورودیهای کاربر است. اکثر وب سایت های وردپرس دارای فیلدهای ورودی کاربر هستند، مانند نوارهای جستجو، فرم های نظر، صفحات ورود و فرم های تماس. فیلد ورودی معمولاً توسط پلاگین وردپرس با جاوا اسکریپت یا طرح زمینه فعال در وب سایت شما فعال می شود.
مشکل این است که همه افزونه ها و تم های وردپرس 100٪ ایمن نیستند و بسیاری از آنها در واقع دارای آسیب پذیری XSS هستند. معنای این امر برای شما این است که مجرمان سایبری می توانند از آسیب پذیری های وردپرس در فیلدهای ورودی برای اجرای فعالیت های مخرب استفاده کنند.
در حالت ایده آل، نوار جستجوی سایت (یا هر فیلد ورودی کاربر دیگر) باید فقط متن ساده و نه دستورات را به عنوان ورودی بپذیرد. با این حال، وردپرس دارای یک آسیبپذیری ورودی کاربر است که به هکرها اجازه میدهد یک کد اجرایی را در قسمت ورودی وارد کرده و آن را به پایگاه داده ارسال کنند.
دور زدن سیاست های مبدا یکسان
خط مشی همان مبدأ یک صفحه را برای بازیابی اطلاعات از سایر صفحات وب محدود می کند. بر اساس این خطمشی، مرورگرهای وب به اسکریپتهای موجود در صفحه وب اول اجازه میدهند که تنها در صورتی به دادههای صفحه وب دوم دسترسی داشته باشند که منشا یکسانی داشته باشند. این کمک می کند تا اطمینان حاصل شود که هیچ درخواست بین سایتی انجام نمی شود.
این خطمشی بیان میکند که اگر صفحه فیسبوک و بانکداری آنلاین خود را در یک مرورگر باز کنید، این دو وبسایت نمیتوانند اطلاعات را با یکدیگر به اشتراک بگذارند. با این حال، اگر چندین برگه فیس بوک (که منشا یکسانی دارند) باز کنید، می توانند اسکریپت و سایر داده ها را بین یکدیگر مبادله کنند.
علیرغم خطمشی مبدأ یکسان و سایر اقدامات امنیتی اتخاذ شده برای جلوگیری از درخواستهای بین سایتی، مجرمان سایبری با استفاده از کوکیهای جلسه راهی برای دور زدن این خطمشی پیدا کردهاند. این کار به این دلیل کار میکند که هر بار که مرورگر را باز میکنید، یک کوکی جلسه ایجاد میکند تا شما را بهعنوان کاربر وبسایت تأیید کند و به شما کمک کند به آرامی از یک صفحه به صفحه دیگر بروید.
کوکیهای جلسه اعتبار ورود به سیستم (از جمله برای سایت وردپرس شما)، اطلاعات کارت اعتباری، جزئیات حمل و نقل و سایر دادههای حساس را ذخیره میکنند. در اینجا نحوه عملکرد آن آمده است. فرض کنید، می خواهید به حساب بانکی آنلاین خود وارد شوید. هنگامی که وب سایت را باز می کنید، یک کوکی جلسه در حال تولید است. اگر کوکیهای جلسه نبود، باید هر بار که میخواهید صفحه را تغییر دهید، به حساب بانکی آنلاین خود وارد شوید.
معمولی نیست که مرورگرهای کاربران دارای آسیبپذیری باشند. و در صورت وجود، مجرمان سایبری از کدی که به ورودی کاربر تزریق کرده اند برای سرقت کوکی های جلسه استفاده می کنند. به این ترتیب، هکرها می توانند کوکی های تمام وب سایت های باز شده در مرورگر کاربر را سرقت کنند. سپس، میتوان از این کوکیها برای ورود به حسابهای کاربران برای جعل هویت و سرقت دادههای مالی استفاده کرد.
چرا اسکریپت بین سایتی خطرناک است؟
اسکریپت بین سایتی یکی از رایج ترین آسیب پذیری های پرخطر وردپرس است. حملات XSS بسیار رایج هستند زیرا بر خلاف سایر آسیب پذیری های امنیتی، رسیدگی به آنها بسیار پیچیده است. حتی زمانی که محافظت داخلی دارید، مرتکب اشتباهاتی که امکان اسکریپت بین سایتی را فراهم می کند بسیار آسان است. فقط یک اشتباه در HTML یا جاوا اسکریپت صفحه وب شما می تواند وب سایت شما را در برابر حملات اسکریپت بین سایتی آسیب پذیر کند.
وقتی مهاجمان راهی برای سوء استفاده از آسیبپذیریهای XSS پیدا میکنند، میتوانند اعتبار حساب، دادههای مالی را بدزدند و کلاهبرداریهای فیشینگ را تسهیل کنند. آنها همچنین می توانند کرم های کامپیوتری را پخش کنند یا از راه دور به رایانه های کاربران دسترسی داشته باشند. علاوه بر این، حملات XSS به هکرها اجازه می دهد تا کارهای زیر را انجام دهند:
- حساب های کاربر را ربوده
- گسترش بدافزار
- کامپیوتر کاربر را از راه دور کنترل کنید
- برنامه های اینترانت را اسکن کرده و از آنها بهره برداری کنید
حملات XSS معمولاً کمتر از تزریق SQL خطرناک هستند. با این حال، وقتی با مهندسی اجتماعی ترکیب میشود، اسکریپتنویسی متقابل به مجرمان سایبری اجازه میدهد تا حملات پیشرفته و بسیار خطرناکی از جمله کاشت تروجانها، keylogging، فیشینگ، سرقت هویت و جعل درخواستهای متقابل سایت را انجام دهند.
برای مبارزه با حملات XSS، شرکتهای بزرگ فناوری اطلاعات برنامههای ویژهای را راهاندازی میکنند. این برنامهها توسط بسیاری از سازمانها پیادهسازی میشوند و به کاربرانی که آسیبپذیریهای XSS را در اسکریپتها گزارش میکنند، جبران یا شناسایی میکنند. به این ترتیب، شرکت ها با شناسایی سایر توسعه دهندگان باگ های خود، روی امنیت سایبری سرمایه گذاری می کنند. Google حتی یک بازی راهاندازی کرد که در آن میتوانید باگهای XSS را ارسال کنید.
انواع حملات XSS
سه نوع اصلی از حملات اسکریپت بین سایتی وجود دارد: XSS منعکس شده، ذخیره شده و مبتنی بر DOM. برای دریافت دیدگاه بهتر از نحوه عملکرد XSS، اجازه دهید نگاهی به هر نوع آسیبپذیری XSS بیندازیم.
اسکریپت بین سایتی ذخیره شده
یک آسیبپذیری ذخیرهشده XSS (با نام مستمر یا نوع I) زمانی رخ میدهد که ورودی کاربر در پایگاه داده، فیلد نظر، گزارش بازدیدکنندگان یا سایر سرورهای هدف ذخیره میشود. و سپس قربانی میتواند دادههای ذخیرهشده (که برای ارائه در مرورگر ایمن نشدهاند) را از برنامه وب بازیابی کند. به این ترتیب، هنگامی که یک هکر حمله ای را انجام می دهد، محموله برای فیلتر XSS مرورگر قابل مشاهده نیست و قربانیان در صورت بازدید از صفحه آسیب دیده می توانند به طور تصادفی بار بار را فعال کنند.
اسکریپت بین سایتی منعکس شده
یک آسیبپذیری بازتابشده XSS (معروف به غیر دائمی یا نوع II) زمانی رخ میدهد که یک برنامه وب بلافاصله ورودی کاربر را در نتیجه جستجو، پیام خطا یا هر پاسخ دیگری برمیگرداند. در این حالت، دادههای ورودی کاربر بدون ذخیره شدن منعکس میشود، بنابراین به هکرها اجازه میدهد تا اسکریپتهای مخرب XSS را تزریق کنند. برخلاف XSS ذخیره شده، XSS منعکس شده به جای بازدیدکنندگان وب سایت، خود وب سایت را هدف قرار می دهد.
XSS مبتنی بر DOM
آسیبپذیری XSS مبتنی بر TA DOM (معروف به نوع 0) در DOM (مدل شیء سند) به جای بخشی از HTML رخ میدهد. منبعی که کد مخرب در آن خوانده می شود می تواند یک URL یا یک عنصر خاص از HTML باشد.
چگونه از حملات اسکریپت بین سایتی جلوگیری کنیم؟
اکنون، همانطور که اصول XSS را پوشش داده اید، بیایید نگاهی به راه های اثبات شده برای جلوگیری از حملات XSS بیاندازیم.
راه های مختلفی وجود دارد که می توانید از وب سایت وردپرس خود در برابر حملات XSS محافظت کنید. اگر تخصص فنی پیشرفته ای دارید، می توانید کدهایی را برای اعتبارسنجی و پاکسازی ورودی های کاربر اضافه کنید. با این حال، اگر با بخش فنی وردپرس آشنایی ندارید، بهتر است کار را به تیم فنی خود محول کنید یا یک متخصص را استخدام کنید که بتواند این اقدامات را برای شما انجام دهد.
در این بین، دو کار وجود دارد که می توانید برای جلوگیری از حملات اسکریپت بین سایتی انجام دهید.
یک افزونه امنیتی نصب کنید
نصب یک افزونه امنیتی وردپرس اولین قدم به سوی امنیت نهایی وب سایت وردپرس شما است. هنگام انتخاب یک افزونه امنیتی، از این چک لیست به عنوان مرجع استفاده کنید تا مطمئن شوید که این افزونه عملکرد مورد نیاز برای ایمن نگه داشتن وب سایت شما را دارد.
- یک افزونه به طور منظم وب سایت شما را برای بدافزار اسکن می کند.
- یک افزونه از فایروال ها برای مسدود کردن هرگونه ترافیکی که به نظر مخرب به نظر می رسد استفاده می کند.
- یک افزونه قادر به اجرای اقدامات سختسازی وردپرس است.
- یک افزونه به شما امکان می دهد تمام به روز رسانی های وردپرس را مدیریت کنید.
- یک افزونه از وب سایت وردپرس شما نسخه پشتیبان تهیه می کند، بنابراین در صورت حمله، می توانید وب سایت خود را بازیابی کنید.
یک افزونه اختصاصی نصب کنید
نصب یک افزونه ضد XSS راه دیگری برای جلوگیری از اسکریپت بین سایتی است. پلاگین های Anti-XSS با مسدود کردن پارامترهایی که معمولاً در حملات اسکریپت بین سایتی استفاده می شوند، کار می کنند. برای مثال، این افزونهها میتوانند فیلدهای ورودی کاربر، مانند فرمهای نظر، فیلدهای ورود، یا نوارهای جستجو را ایمن کنند.
نتیجه نهایی – 39٪ از همه آسیبپذیریهای وردپرس متصل هستند با مشکلات اسکریپت بین سایتی. شرکت ها میلیون ها دلار را در تلاش برای مبارزه با عواقب حملات اسکریپت نویسی متقابل از دست می دهند. برای جلوگیری از حملات XSS که در وب سایت شما هدف قرار می گیرند، مهم است که بفهمید اسکریپت بین سایتی چیست و اقدامات پیشگیرانه انجام دهید.
برای اینکه وب سایت خود را از اسکریپت های متقابل سایت ایمن نگه دارید، باید فیلدهای ورودی خود را تأیید و پاکسازی کنید. علاوه بر این، میتوانید افزونههای امنیتی و اختصاصی ضد XSS را نصب کنید که به شما کمک میکند تا وبسایت وردپرس خود را ایمن نگه دارید.