تزریق اسکریپت از طریق وبگاه
تزریق اسکریپت از طریق وبگاه (انگلیسی:XSS: Cross Site Scripting) از روشهای نفوذ و گرفتن دسترسی غیر مجاز از یک وبگاه است که توسط یک هکر به کار میرود. در XSS تلاش میشود تا یک نبشتهٔ اجرایی (همچون جاواسکریپت) یا کد HTML نامطلوب از لایههای امنیتی احتمالی یک وبگاه گذر داده شود و همراه با کد HTML و نبشتههای اجرایی اصلی وبگاه دوباره به سمت کاربر بازگردانده شود. در نتیجه مرورگر این کد جدید را با این فرض که متعلق به وبگاه است اجرا کرده و تغییراتی در ظاهر و کارکرد وبگاه حاصل میشود. از همین رو به این حمله «گذردهی نبشته از وبگاه» گفته میشود. در گونهٔ خطرناکتر این حمله، نبشتهٔ گذراندهشده از حفاظ کارگزار، در سمت کارگزار ذخیره میشود (همچون بخشی از متن یک وبلاگ) تا در آینده توسط همهٔ کاربرهایی که آن وبگاه را باز میکنند دریافت و اجرا شود. به این گونه «گذردهی پایای نبشته از وبگاه» گفته میشود.
تاریخچه
تاریخچه حفرههای امنیتی در معرض حملات XSS به سال ۱۹۹۶ و سالهای اولیه صفحات وب باز میگردد. نفوذگران در آن زمان که پروتکل HTTP جا افتاده بود و طراحان وبگاهها از زبانهای پردازهنویسی مانند جاوا اسکریپت سود میبردند، دریافتند وقتی کاربران معمولی وارد سایتی میشود میتوان به کمک کدنویسی در حفرههای امنیتی وبگاه، صفحه دیگری را در همان صفحه بارگذاری کرد سپس با سود بردن از جاوا اسکریپت دادههای کاربر مانند نام کاربری، گذرواژه یا کوکی(Cookie)ها را دزدید.
در این هنگام رسانهها این مشکلات را به ضعف امنیتی مرورگرها نسبت داده بودند. شرکت ارتباطی Netscape که جزو اولین تولیدکنندگان مرورگرهای وب و همچنین سازنده زبان جاوا اسکریپت بود سیاست دامنه شخصی را به این زبان افزود که جلوی دسترسی به آدرسهای خارج از دامنه وبگاه را میگرفت و تا حدودی این حملات را محدود میکرد.
انواع حملات
سناریوهای مختلفی برای قرار دادن کد مخرب در سایتها به عنوان حمله وجود دارد:
- طراح سایت، خود کد مخرب را در صفحه قرار داده باشد.
- حفره سایت ممکن است در سطح سیستمعامل یا شبکه ایجاد شده باشد.
- یک حفره دائمی در یکی از مکانهای عمومی وبگاه قرار گرفته باشد.
- قربانی بر روی یک لینک حاوی XSS مدل non-persistent یا DOM-based کلیک کند.
فیلتر کردن
فیلتر کردن را از دو منظر باید بررسی کرد. فیلتر کردن ورودیهای کاربر و فیلتر کردن خروجیها برای کاربر است.
- فیلتر ورودی:
- در این قسمت، برنامهنویس وظیفه دارد با فیلتر کردن ورودیهای کاربر، شکل و چینش کدهای مخرب را شناسایی کرده و آنها را فیلتر کند.
- فیلتر خروجی:
- در این قسمت، برنامهنویس وظیفه دارد با فیلتر کردن کدهای خروجی اجازه ایجاد حفرههای امنیتی و به تبع آن شکل گیری حملات XSS را متوقف کند.
روشهای خنثی کردن
جستارهای وابسته
منابع
- ↑ «وصله شدن آسیبپذیری خطرناک XSS در وردپرس ۴٫۰٫۱». پایگاه خبری امنیت فناوری اطلاعات. ۲ آذر ۱۳۹۳. دریافتشده در ۲۰۱۵-۰۵-۱۰.
- The Apache Software Foundation. “Cross Site Scripting Info: Encoding Examples. ” http://httpd.apache.org/info/csssecurity/encoding_examples.html
- http://www.owasp.org/xss
- Jeremiah Grossman, Anton Rager. XSS Attacks. : 1-59749-154-3. Elsevier. ۲۰۰۷.
- Howard, Michael. “Some Bad News and Some Good News. ” MSDN Library. ۲۱ October ۲۰۰۲.