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
| پلتفرم | روش مناسب نمایش متن |
|---|---|
| PHP | htmlspecialchars($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، سیاسپی، جعل درخواست بینسایتی، پروتکل انتقال ابرمتن.