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

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

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

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

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

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

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

جستارهای وابسته 
 هک
 مهندسی اجتماعی
 Exploit
 جعل درخواست میان‌وب‌گاهی

منابع 

 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 ۲۰۰۲.

بهره‌جوهای امنیتی وب
سوءاستفاده از تزریق
سوءاستفاده امنیتی از رایانه
هک (امنیت رایانه)
هک