تزریق نبشتهٔ قلابی در وبگاه[۱] یا تزریق اسکریپت از طریق وبگاه[۲] (انگلیسی: XSS: Cross Site Scripting) از روشهای نفوذ و گرفتن دسترسی غیر مجاز از یک وبگاه است که توسط یک هکر به کار میرود. در XSS تلاش میشود تا یک نبشتهٔ اجرایی (همچون جاواسکریپت) یا کد HTML نامطلوب از لایههای امنیتی احتمالی یک وبگاه گذر داده شود و همراه با کد HTML و نبشتههای اجرایی اصلی وبگاه دوباره به سمت کاربر بازگردانده شود. در نتیجه مرورگر این کد جدید را با این فرض که متعلق به وبگاه است اجرا کرده و تغییراتی در ظاهر و کارکرد وبگاه حاصل میشود. از همین رو به این حمله «گذردهی نبشته از وبگاه» گفته میشود. در گونهٔ خطرناکتر این حمله، نبشتهٔ گذراندهشده از حفاظ کارگزار، در سمت کارگزار ذخیره میشود (همچون بخشی از متن یک وبلاگ) تا در آینده توسط همهٔ کاربرهایی که آن وبگاه را باز میکنند دریافت و اجرا شود. به این گونه «گذردهی پایای نبشته از وبگاه» گفته میشود.
تاریخچه
[ویرایش]تاریخچه حفرههای امنیتی در معرض حملات XSS به سال ۱۹۹۶ و سالهای اولیه صفحات وب باز میگردد. نفوذگران در آن زمان که پروتکل HTTP جا افتاده بود و طراحان وبگاهها از زبانهای پردازهنویسی مانند جاوا اسکریپت سود میبردند، دریافتند وقتی کاربران معمولی وارد سایتی میشود میتوان به کمک کدنویسی در حفرههای امنیتی وبگاه، صفحه دیگری را در همان صفحه بارگذاری کرد سپس با سود بردن از جاوا اسکریپت دادههای کاربر مانند نام کاربری، گذرواژه یا کوکی(Cookie)ها را دزدید.
در این هنگام رسانهها این مشکلات را به ضعف امنیتی مرورگرها نسبت داده بودند. شرکت ارتباطی نت اسکیپ که جزو اولین تولیدکنندگان مرورگرهای وب و همچنین سازنده زبان جاوا اسکریپت بود سیاست دامنه شخصی را به این زبان افزود که جلوی دسترسی به آدرسهای خارج از دامنه وبگاه را میگرفت و تا حدودی این حملات را محدود میکرد.[نیازمند منبع]
انواع حملات
[ویرایش]سناریوهای مختلفی برای قرار دادن کد مخرب در سایتها به عنوان حمله وجود دارد:
- طراح سایت، خود کد مخرب را در صفحه قرار داده باشد.
- حفره سایت ممکن است در سطح سیستمعامل یا شبکه ایجاد شده باشد.
- یک حفره دائمی در یکی از مکانهای عمومی وبگاه قرار گرفته باشد.
- قربانی بر روی یک لینک حاوی XSS مدل non-persistent یا DOM-based کلیک کند. ( حملات XSS در واقع یک حفرهی امنیتی در فضای وب است که مهاجم را قادر میسازد فعالیتهای کاربرانی را که از برنامههای تحت وب با امنیت پایین استفاده میکنند را به خطر بیندازد، به این نحو که مهاجم با استفاده از این حفره میتواند سیاستها و قوانین اجرا شده برای تفکیک وبسایتها را دور بزند.)
فیلتر کردن
[ویرایش]فیلتر کردن را از دو منظر باید بررسی کرد. فیلتر کردن ورودیهای کاربر و فیلتر کردن خروجیها برای کاربر است.
- فیلتر ورودی:
- در این قسمت، برنامهنویس وظیفه دارد با فیلتر کردن ورودیهای کاربر، شکل و چینش کدهای مخرب را شناسایی کرده و آنها را فیلتر کند.
- فیلتر خروجی:
- در این قسمت، برنامهنویس وظیفه دارد با فیلتر کردن کدهای خروجی اجازه ایجاد حفرههای امنیتی و به تبع آن شکل گیری حملات XSS را متوقف کند.
روشهای خنثی کردن
[ویرایش]- سود بردن از مرورگر مناسب.
- سود بردن از ابزارهای محدودکننده اجرای کد مانند NoScript
- کلیک نکردن بر روی لینک و آدرسهای ناشناس.
جستارهای وابسته
[ویرایش]منابع
[ویرایش]- ↑ «انجمن رمز ایران». واژهنامه امنیت فضای تبادل اطلاعات (افتا)، نسخهٔ اول. ۱۳۸۹.
- ↑ «وصله شدن آسیبپذیری خطرناک 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 ۲۰۰۲.