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