تزریق اسکریپت از طریق وب‌گاه

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

تزریق اسکریپت از طریق وب‌گاه[۱] (انگلیسی:XSS: Cross site scripting) از روش‌های نفوذ و گرفتن دسترسی غیر مجاز از یک وب‌گاه است که توسط یک هکر به کار می‌رود. در XSS نلاش می‌شود تا یک نبشتۀ اجرایی (همچون جاواسکریپت) یا کد HTML نامطلوب از لایه‌های امنیتی احتمالی یک وب‌گاه گذر داده شود و همراه با کد HTML و نبشته‌های اجرایی اصلی وب‌گاه دوباره به سمت کاربر بازگردانده شود. در نتیجه مرورگر این کد جدید را با این فرض که متعلق به وب‌گاه است اجرا کرده و تغییراتی در ظاهر و کارکرد وب‌گاه حاصل می‌شود. از همین رو به این حمله «گذردهی نبشته از وب‌گاه» گفته می‌شود. در گونۀ خطرناک‌تر این حمله، نبشتۀ گذرانده‌شده از حفاظ کارگزار، در سمت کارگزار ذخیره می‌شود (همچون بخشی از متن یک وبلاگ) تا در آینده توسط همۀ کاربرهایی که آن وب‌گاه را باز می‌کنند دریافت و اجرا شود. به این گونه «گذردهی پایای نبشته از وب‌گاه» گفته می‌شود.

تاریخچه[ویرایش]

تاریخچه حفره‌های امنیتی در معرض حملات XSS به سال ۱۹۹۶ و سالهای اولیه صفحات وب باز می‌گردد. نفوذگران در آن زمان که پروتکل HTTP جا افتاده بود و طراحان وب‌گاه‌ها از زبانهای پردازه‌نویسی مانند جاوا اسکریپت سود می‌بردند، دریافتند وقتی کاربران معمولی وارد سایتی می‌شود می‌توان به کمک کدنویسی در حفره‌های امنیتی وب‌گاه، صفحه دیگری را در همان صفحه بارگذاری کرد سپس با سود بردن از جاوا اسکریپت داده‌های کاربر مانند نام کاربری، گذرواژه و یا کوکی(Cookie)ها را دزدید.

در این هنگام رسانه‌ها این مشکلات را به ضعف امنیتی مرورگرها نسبت داده بودند. شرکت ارتباطی Netscape که جزو اولین تولیدکنندگان مرورگرهای وب و همچنین سازنده زبان جاوا اسکریپت بود سیاست دامنه شخصی را به این زبان افزود که جلوی دسترسی به آدرس‌های خارج از دامنه وب‌گاه را می‌گرفت و تا حدودی این حملات را محدود می‌کرد.[نیازمند منبع]

انواع حملات[ویرایش]

سناریوهای مختلفی برای قرار دادن کد مخرب در سایتها به عنوان حمله وجود دارد:

  • طراح سایت، خود کد مخرب را در صفحه قرار داده باشد.
  • حفره سایت ممکن است در سطح سیستم‌عامل یا شبکه ایجاد شده باشد.
  • یک حفره دائمی در یکی از مکان‌های عمومی وب‌گاه قرار گرفته باشد.
  • قربانی بر روی یک لینک حاوی XSS مدل non-persistent یا DOM-based کلیک کند.

فیلتر کردن[ویرایش]

فیلتر کردن را از دو منظر باید بررسی کرد. فیلتر کردن ورودی‌های کاربر و فیلتر کردن خروجی‌ها برای کاربر است.

  • فیلتر ورودی:
    • در این قسمت، برنامه نویس وظیفه دارد با فیلتر کردن ورودی‌های کاربر، شکل و چینش کدهای مخرب را شناسایی کرده و آنها را فیلتر کند.
  • فیلتر خروجی:
    • در این قسمت، برنامه نویس وظیفه دارد با فیلتر کردن کدهای خروجی اجازه ایجاد حفره‌های امنیتی و به طبع آن شکل گیری حملات XSS را متوقف کند.

روش‌های خنثی کردن[ویرایش]

  • سود بردن از مرورگر مناسب.
  • سود بردن از ابزارهای محدودکننده اجرای کد مانند NoScript
  • کلیک نکردن بر روی لینک و آدرسهای ناشناس.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. «وصله شدن آسیب‌پذیری خطرناک XSS در وردپرس ۴٫۰٫۱». پایگاه خبری امنیت فناوری اطلاعات، ۲ آذر ۱۳۹۳. بازبینی‌شده در 2015-05-10.