
حمله XSS چیست؟ ۰ تا ۱۰۰ حمله اسکریپتنویسی بینسایتی
XSS چیست یک سوال کلاسیک در دنیای امنیت وب است. XSS مخفف Cross Site Scripting و همان حمله اسکریپتنویسی بینسایتی است؛ یعنی مهاجم، کدی مخرب که معمولا جاوا اسکریپت است را درون صفحه یک وبسایت قانونی جا میزند تا در مرورگر کاربران دیگر اجرا شود. این نوع تزریق کد به مهاجم اجازه میدهد نشست کاربر […]
حمله XSS چیست؟ ۰ تا ۱۰۰ حمله اسکریپتنویسی بینسایتی
XSS چیست یک سوال کلاسیک در دنیای امنیت وب است. XSS مخفف Cross Site Scripting و همان حمله اسکریپتنویسی بینسایتی است؛ یعنی مهاجم، کدی مخرب که معمولا جاوا اسکریپت است را درون صفحه یک وبسایت قانونی جا میزند تا در مرورگر کاربران دیگر اجرا شود. این نوع تزریق کد به مهاجم اجازه میدهد نشست کاربر را بدزدد، اطلاعات حساس را بخواند یا محتوای صفحه را دستکاری کند.
در این مقاله توضیح میدهیم حمله XSS چیست، چگونه اتفاق میافتد، چه انواع و خطراتی دارد و چطور میتوانید از آن جلوگیری کنید. در ادامه این مطلب از مجله پارس هاست همراه ما باشید.

حمله XSS چیست و چطور کار میکند؟
حمله XSS به زبان ساده، نوعی حمله به وبسایت است که در آن مهاجم کد مخرب را وارد صفحه وب میکند. این کد میتواند هنگام باز شدن صفحه توسط کاربران، در مرورگر آنها اجرا شود و اطلاعاتشان را در معرض خطر قرار دهد.
فرض کنید سایتی فرم نظرسنجی دارد و هر چه کاربر تایپ کند، بدون بررسی مستقیم روی صفحه، نمایش داده میشود. مهاجم بهجای یک نظر عادی، یک تکه کد جاوا اسکریپت وارد میکند. اگر سایت این ورودی را پاکسازی نکند، مرورگر هر کاربری که آن صفحه را باز میکند، آن کد را اجرا میکند و فکر میکند از سمت سایت اصلی آمده است!
نکته جالب اینجاست که سرور خود سایت لزوما هک نمیشود؛ کد مخرب در حملات XSS معمولا در مرورگر کاربر اجرا میشود، اما ریشه آسیبپذیری میتواند در کد و نحوه پردازش ورودی در برنامه وب باشد؛ یعنی سایت فقط ابزار انتقال کد مخرب میشود.
در توضیح رسمی PortSwigger، وبسایت تخصصی در حوزه امنیت وب و تست نفوذ، درباره ماهیت این آسیبپذیری آمده است:
“Cross-site scripting (also known as XSS) is a web security vulnerability that allows an attacker to compromise the interactions that users have with a vulnerable application. It allows an attacker to circumvent the same origin policy, which is designed to segregate different websites from each other.” «اسکریپتنویسی بینسایتی که با نام XSS نیز شناخته میشود، یکی از آسیبپذیریهای امنیتی وب است که به مهاجم اجازه میدهد تعامل کاربران با یک برنامه آسیبپذیر را تحت تاثیر قرار دهد یا کنترل کند. این آسیبپذیری میتواند به مهاجم امکان دور زدن سیاست مبدا یکسان (Same-Origin Policy) را بدهد؛ سیاستی که برای جداسازی وبسایتها و جلوگیری از دسترسی آنها به یکدیگر طراحی شده است.» منبع: PortSwigger
آسیب پذیری XSS از کجا ناشی میشود؟
آسیب پذیری xss معمولا وقتی پیش میآید که یک برنامه، ورودی کاربر را بدون اعتبارسنجی یا انکد کردن، مستقیم در خروجی HTML قرار میدهد.
چند نقطه رایج بروز این باگ وجود دارد:
- فرمهای نظر و کامنت
- کادر جستوجوی سایت
- پارامترهای آدرس URL
- فیلدهای پروفایل کاربری
طبق آمار پروژه OWASP، تزریق XSS هنوز هم یکی از متداولترین نقاط ضعف اپلیکیشنهای وب است و در بسیاری از تستهای نفوذ، این باگ در اولین رده شناخته شده قرار دارد.
انواع XSS کداماند؟
وقتی صحبت از انواع xss میشود، معمولا سه دسته اصلی مطرح است:
۱. XSS ذخیرهشده (Stored): Stored XSS زمانی رخ میدهد که کد مخرب در بخشی از برنامه ذخیره شود و هنگام نمایش محتوای آسیبپذیر، برای کاربرانی که آن صفحه را مشاهده میکنند اجرا شود.
۲. XSS بازتابی (Reflected): کد مخرب داخل یک لینک یا درخواست HTTP قرار میگیرد و فقط وقتی کاربر روی همان لینک کلیک کند اجرا میشود.
۳. XSS مبتنی بر DOM : آسیبپذیری در همان کد سمت کلاینت است، بدون اینکه سرور اصلا درگیر پردازش کد ورودی باشد.
مثال ساده: یک فروشگاه اینترنتی که نتیجه جستوجو را مستقیم در صفحه چاپ میکند، هدف کلاسیک نوع بازتابی است. کافی است مهاجم لینکی با کد مخرب برای کاربر بفرستد تا نشست او را بدزدد.

باگ XSS چه خطراتی برای کسبوکار دارد؟
باگ xss فقط یک مشکل فنی کوچک نیست. وقتی این باگ در یک سایت پرکاربر کشف شود، عواقبی مثل این موارد را دارد:
- سرقت اطلاعات حساس یا سوءاستفاده از نشست کاربر، در شرایطی که برنامه و تنظیمات امنیتی امکان آن را ایجاد کنند
- تغییر ظاهر صفحه یا انتقال کاربر به سایتهای جعلی
- دسترسی به دادههایی که کاربر در صفحه میبیند
- در صورت آسیب دیدن حساب مدیر، مهاجم عملا کنترل کامل سایت را به دست میگیرد
یک کیس مطالعاتی معروف در این حوزه، حمله سال دو هزار و پنج به شبکه اجتماعی MySpace است؛ که یک کرم XSS به نام Samy فقط با استفاده از یک باگ ساده در بخش پروفایل کاربران، در کمتر از بیست ساعت روی بیش از یک میلیون پروفایل پخش شد.
چطور جلوی XSS Attack را بگیریم؟
برای مقابله با xss attack چند اصل پایهای وجود دارد که تیمهای توسعه باید رعایت کنند:
- انکد کردن خروجی HTML قبل از نمایش هر ورودی کاربر
- استفاده از هدر Content Security Policy برای محدود کردن منابع مجاز اجرای اسکریپت
- فعال کردن ویژگی HttpOnly روی کوکیهای حساس
- بررسی و پاکسازی ورودی هم در سمت کلاینت و هم در سمت سرور
در کنار این موارد، بسیاری از تیمها یک لایه دفاعی اضافه هم میگذارند. اینجاست که WAF اهمیت پیدا میکند؛ یک فایروال اختصاصی لایه اپلیکیشن که الگوهای مشکوک را قبل از رسیدن به سرور فیلتر میکند. تفاوتش با فایروال در این است که فایروال معمولی بیشتر روی ترافیک شبکه کار میکند، ولی WAF مستقیم محتوای درخواست HTTP را بررسی میکند.
چه ارتباطی بین زیرساخت سرور و امنیت XSS وجود دارد؟تکنولوژی sni چیست
نکته مهم این است که هیچ گواهی رمزنگاری یا زیرساخت قوی، جای اصلاح کد ضعیف را نمیگیرد. برای مثال داشتن HTTPS یا استفاده از TLS فقط ارتباط بین مرورگر و سرور را رمزنگاری میکند، اما اگر خود کد سایت، ورودی کاربر را پاکسازی نکند، حمله همچنان ممکن است. حتی تکنولوژی SNI که برای میزبانی چند سایت روی یک IP به کار میرود، هیچ ربطی به جلوگیری از تزریق کد ندارد.
با این حال، انتخاب زیرساخت درست هم بیتاثیر نیست. اگر پروژهای در حال رشد است و میخواهید کنترل بیشتری روی پیکربندی امنیتی داشته باشید، خرید سرور مجازی با امکان نصب فایروال اختصاصی، یکی از قدمهای منطقی است. همینطور تیمهایی که اپلیکیشن را در قالب کانتینر اجرا میکنند، میتوانند با جداسازی سرویسها یک لایه ایزولهسازی اضافه ایجاد کنند؛ البته کانتینر بهتنهایی مانع گسترش آسیب یا نفوذ نمیشود. در نهایت رعایت اصول امنیت سرور در کنار اصلاح کد برنامه، ترکیب کاملی برای کاهش ریسک این نوع حمله فراهم میکند.
مسیر پیش روی XSS چیست؟
نکتهای که کمتر گفته میشود این است که با گسترش اپلیکیشنهای تکصفحهای و فریمورکهای جدید جاوا اسکریپت، بخش زیادی از منطق برنامه به سمت مرورگر منتقل شده، در نتیجه سطح حمله XSS نوع DOM هم گستردهتر شده است. از طرف دیگر مرورگرهای مدرن با ابزارهایی مثل Content Security Policy و Trusted Types تلاش میکنند این ریسک را از ریشه محدود کنند.
روند فعلی نشان میدهد آینده مقابله با این نوع حمله بیشتر به سمت خودکارسازی بررسی کد در فرایند توسعه و استفاده گستردهتر از کتابخانههای امنشده در برابر تزریق حرکت میکند، جایی که خطای انسانی نقش کمتری در بروز این باگ کلاسیک ایفا کند.
سوالات متداول
۱. حمله XSS چیست و چرا خطرناک است؟
XSS نوعی آسیبپذیری وب است که به مهاجم اجازه میدهد کد جاوا اسکریپت مخرب را در مرورگر کاربران دیگر اجرا کند و به این ترتیب اطلاعات یا نشست آنها را در معرض خطر بگذارد.
۲. تفاوت XSS ذخیرهشده و بازتابی چیست؟
نوع ذخیرهشده در پایگاه داده سایت باقی میماند و همیشه فعال است، اما نوع بازتابی فقط با کلیک روی یک لینک خاص اجرا میشود.
۳. آیا داشتن HTTPS از XSS جلوگیری میکند؟
خیر، HTTPS فقط ارتباط را رمزنگاری میکند و ربطی به پاکسازی ورودی کاربر در کد برنامه ندارد.
۴. چطور میتوانم یک سایت را در برابر XSS تست کنم؟
تیمهای امنیتی معمولا با وارد کردن کدهای آزمایشی جاوا اسکریپت در فرمها و پارامترهای URL بررسی میکنند که آیا سایت آنها را اجرا میکند یا پاکسازی میکند.
۵. آیا WAF بهتنهایی کافی است؟
نه کاملا؛ WAF یک لایه دفاعی اضافه است، اما اصلاح کد و اعتبارسنجی ورودی در سطح برنامه همچنان ضروری است.
۰