حملات Cross-Site Scripting (XSS) در سراسر اینترنت گسترده هستند. از آنها می توان برای جعل هویت کاربران، سرقت اطلاعات خصوصی، تخریب یک وب سایت و موارد دیگر استفاده کرد. بنابراین حمله XSS دقیقا چیست؟ چرا یک تهدید امنیتی است؟ و چگونه می توانید از حملات اسکریپت بین سایتی جلوگیری کنید؟
حمله XSS چیست؟
Cross-Site Scripting که معمولاً با نام XSS شناخته میشود، یک آسیبپذیری امنیتی برنامه وب است که به مهاجمان اجازه میدهد کد یا اسکریپتهای دلخواه سمت کلاینت را به صفحات وب تزریق کنند. هنگامی که یک کاربر ناآگاه با صفحه وب آلوده تعامل می کند، کد تزریق شده فعال می شود و قربانی با حمله ای مواجه می شود که به طور بالقوه قادر به سرقت اطلاعات حساس یا انجام تراکنش های ناخواسته به هزینه قربانی است.
یک اسکریپت مخرب میتواند به عنوان یک کاربر ظاهر شود، اطلاعات و کوکیها را بدزدد، محتوای سایت را دستکاری کند، وبسایت را تخریب کند و قربانیان را به سایتهای مخرب هدایت کند. حملات XSS جدید نیستند. آنها ابتدا در دهه 1990 شروع به کار کردند و از آن زمان تاکنون به طور مداوم به عنوان یکی از 10 خطر برتر امنیت وب توسط پروژه امنیت وب برنامه باز (OWASP) با بیش از 274000 مورد گزارش در سال 2021 فهرست شده اند.
حملات XSS چگونه کار می کنند؟
حمله XSS حول ناتوانی وب سایت در پاکسازی داده های ورودی می چرخد. این بدان معنی است که وب سایت به درستی محتوای HTML را از ورودی هایی که می پذیرد حذف نمی کند. چرا این بد است؟ مرورگر وب شما نمی تواند تفاوت بین کد اصلی وب سایت و کد تزریق شده را تشخیص دهد. بنابراین، اگر یک مهاجم در اسکریپت های مخرب (جاوا اسکریپت، VBScript و غیره) تغذیه کند، به عنوان ورودی معتبر منتقل می شود و مرورگر آن را در کنار کد خود وب سایت ارائه می دهد.
حملات اسکریپت نویسی بین سایتی به روش های مختلفی انجام می شود که همه آنها به عوامل مختلفی مانند نقطه پایانی، نحوه راه اندازی اسکریپت، اینکه آیا بار بار فقط در سمت مشتری منعکس می شود یا می تواند در پایگاه داده سمت سرور ذخیره شود، و موارد دیگر بستگی دارد.
انواع حملات XSS
حملات اسکریپت بین سایتی (XSS) بر اساس نحوه اجرای اسکریپت و نحوه تحویل حمله به سه نوع اصلی طبقه بندی می شوند: Reflected XSS، Stored XSS و DOM-based XSS. پس این حملات XSS به چه معناست؟
Reflected Cross-Site Scripting (XSS)
Reflect cross-site scripting نوعی حمله XSS است که در آن کد تزریق شده در هر پاسخی که شامل داده های ورودی به عنوان بخشی از درخواست ارائه شده به وب سرور باشد، از سرور منعکس می شود. به دلیل اعتبار سنجی نامناسب ورودی، مرورگر اسکریپت را اجرا می کند و خروجی آن را به مشتری برمی گرداند. این ابتدایی ترین نوع از تمام حملات XSS است و نسبت به همتای خود، XSS ذخیره شده، تهدید کمتری برای یک وب سایت است. اما این یک تهدید باقی می ماند و باید در مورد آن محتاط باشید. حملات XSS منعکس شده عموماً از طریق ایمیل و سایر اشکال مهندسی اجتماعی یا کمپین های فیشینگ منتشر می شوند.
Stored Cross-Site Scripting (XSS)
Stored Cross-Site Scripting نوعی دیگر از حمله XSS است که در آن کدهای مخرب را می توان در پایگاه داده یک وب سرور جاسازی یا ذخیره کرد. این مرگبارترین نوع حمله XSS است زیرا به طور بالقوه امنیت کل پایگاه کاربر وب سایت را به خطر می اندازد. کاربرانی که از صفحه وب تعبیهشده با کد مخرب بازدید میکنند، توسط payload مورد حمله قرار میگیرند.
به عنوان مثال، اگر بخش نظرات یک وب سایت محبوب در برابر XSS ذخیره شده آسیب پذیر باشد، مهاجم می تواند کدهای مخرب را در نظرات خود قرار دهد. هر بار که یک بیننده با نظر روبرو می شود، مرورگر آن کد مخرب را اجرا می کند و سیستم و داده های آنها را به خطر می اندازد. یک زیرمجموعه از XSS ذخیره شده، حمله XSS کور است. در این نوع، مهاجم کد را به عنوان ورودی تزریق میکند، دادههای ورودی در باطن ذخیره میشوند و سپس از قسمت دیگری از برنامه وب به قربانی منعکس میشوند. به عنوان مثال، اگر یک مهاجم کد مخرب را به فرم های تماس یا بازخورد وب سایت تزریق کند، زمانی که مدیر وب سایت داده های ورودی را بررسی می کند، کد تزریق شده اجرا می شود.
DOM-Based Cross-Site Scripting (XSS)
حمله اسکریپت نویسی متقابل مبتنی بر مدل شی سند (DOM) یک حمله سمت کلاینت است که در آن کدهای مخرب ابتدا در DOM مرورگر نوشته شده و سپس توسط مرورگر اجرا می شود. این به دلیل پاکسازی نامناسب ورودی توسط وب سایت رخ می دهد. در یک برنامه وب آسیب پذیر، مهاجم می تواند از یک اسکریپت برای دسترسی به DOM و دستکاری محتوای آن استفاده کند. مانند XSS منعکس شده، حملات XSS مبتنی بر DOM نیز از طریق مهندسی اجتماعی انجام می شود. قربانی فریب خورده و روی یک URL مخرب کلیک میکند که او را به صفحه آسیبپذیری که اسکریپت توسط مرورگر اجرا میشود هدایت میکند.
نحوه شناسایی و جلوگیری از آسیب پذیری های XSS در سایت
شناسایی و اصلاح آسیبپذیریهای Cross-site scripting (XSS) آسان نیست – دلیل مهمی است که امروزه نیز مانند دهههای پیش رایج هستند. با این حال، پیروی از شیوههای توسعه قوی و اولویتبندی امنیت میتواند سایت شما را از حملات سایبری ویرانگر و نقضهای مخرب نجات دهد که به طور بالقوه میلیونها هزینه برای شما به همراه خواهد داشت.
در ادامه چند نکته در مورد جلوگیری از حملات XSS به عنوان یک توسعه دهنده وجود دارد:
- به عنوان یک قانون اساسی، به ورودی کاربر اعتماد نکنید. هر ورودی کاربر که با HTML ارائه شود، خطر حمله XSS را به همراه دارد.
- برای فرار از هر اسکریپتی که وارد فیلدهای ورودی می شود، تکنیک های فرار یا رمزگذاری مناسب را اجرا کنید.
- ورودی کاربر را پاکسازی کنید تا هر اسکریپت تزریق شده را پاک کنید.
- پرچم HttpOnly را برای کوکی ها تنظیم کنید تا از طریق برنامه نویسی سمت کلاینت غیرقابل دسترسی باشند.
- سیاست امنیتی محتوا (CSP) را برای جلوگیری از تزریق اسکریپت به صفحه وب از منابع احراز هویت نشده اعمال کنید.
به عنوان یک کاربر در حال مرور وب، شما فقط می توانید کارهای زیادی برای محافظت از خود در برابر حمله XSS انجام دهید، جز اینکه مراقب پیوندهایی باشید که روی آنها کلیک می کنید و سایت هایی که بازدید می کنید. بهعنوان یک صاحب کسبوکار آنلاین، همیشه باید به دنبال فناوریهای دفاعی باشید تا کسبوکار خود را در برابر تهدیدات ایمن کنید و هرگونه خلأ در ساختار داخلی را برطرف کنید. به عنوان یک کسب و کار نوظهور، اگر نمی توانید برای ارتقای سطح امنیتی سازمان خود سرمایه گذاری کنید، اتخاذ بهترین شیوه های امنیتی تا حدودی از شما محافظت می کند.