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

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

این اتفاق ممکن در مکانی هایی مثل صفحه چت یا کامنت که کاربران عادی هم به آن دسترسی دارند موجب این شود که این متن به تمامی کاربران آن صفحه نشان داده شود.

نکته : هکر قبل از حمله باید بداند ساختار سایت به چه شکل است و بسته به نیاز او یا باید بک اند یا فرانت اند وبسایت و یا هر دو را درک کند

= نمونه =

```javascript
alert("Hello world!");
```
کد جاوا اسکریپ بالا می تواند یک پنجره با نوشته !Hello World را نشان دهد . (نشان دادن پیام از طرف سایت به کاربران)


```html5
<u>test</u>
```

کد اچ تی ام ال بالا باعث میشود که زیر متن، یک خط شکل بگیرد ماننده : test

```css
body{
color : white;
    background-color:white;
}
div {
color : white;
    background-color:white;
}
#comment123 {
    color:black;
}
```
این کد سی اس اس می تواند div و body که در اکثر سایت ها جزو المان هایی اصلی هست را به رنگ سفید با متن سفید  در بیارد (پنهان شدن متن) و کامنت شماره 123 را مشکی کند (برجسته شدن)

*نکته : این کد یک ساختار فرضی را مورد حمله قرار میدهد* 

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

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

## انواع حملات
سناریوهای مختلفی برای قرار دادن کد مخرب در سایتها به عنوان حمله وجود دارد:
* طراح سایت، خود کد مخرب را در صفحه قرار داده باشد.
* حفره سایت ممکن است در سطح سیستم‌عامل یا شبکه ایجاد شده باشد.
* یک حفره دائمی در یکی از مکان‌های عمومی وب‌گاه قرار گرفته باشد.
* قربانی بر روی یک لینک حاوی 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 ۲۰۰۲.

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