XSS مخفف Cross-Site Scripting است. این آسیب‌پذیری زمانی ایجاد می‌شود که داده کنترل‌شده توسط کاربر بدون پردازش متناسب با زمینه، به محتوای اجرایی مرورگر تبدیل شود. Stored، Reflected و DOM-based از دسته‌های شناخته‌شده XSS هستند.

نمونه آسیب‌پذیر و نسخه امن

const comment = new URLSearchParams(location.search).get('comment') ?? '';
// Unsafe: user input is interpreted as HTML
document.querySelector('#comment').innerHTML = comment;

// Safer for plain text
document.querySelector('#comment').textContent = comment;

در PHP، پایتون و ASP.NET Core

پلتفرمروش مناسب نمایش متن
PHPhtmlspecialchars($value, ENT_QUOTES, 'UTF-8')
Django{{ comment }} با Escape خودکار قالب
ASP.NET Core Razor@Model.Comment به صورت عادی HTML Encode می‌شود
React{comment} در JSX متن را Escape می‌کند

انواع XSS

نوعشرح
Storedمحتوای خطرناک در داده برنامه می‌ماند
Reflectedورودی درخواست در پاسخ منعکس می‌شود
DOM-basedعملیات جاوااسکریپت مرورگر با داده ناامن انجام می‌شود

نکته فنی

Escape درست به زمینه بستگی دارد. HTML Encode به تنهایی در URL، CSS یا JavaScript کافی نیست. برای HTML مورد اعتماد از Sanitizer معتبر استفاده کنید.

اصطلاحات مرتبط: پیشگیری از XSS، سی‌اس‌پی، جعل درخواست بین‌سایتی، پروتکل انتقال ابرمتن.