XSS ذخیرهشده (Stored) در بخش نظرات کاربران
وقتی یک payload XSS در دیتابیس ذخیره و برای هر کاربری که صفحه را باز میکند اجرا میشود.
برخلاف XSS بازتابی، نسخهی ذخیرهشده نیازی به فریب قربانی ندارد؛ کافی است مهاجم یکبار payload را در جایی مثل بخش نظرات، نام نمایشی یا بیوگرافی پروفایل ذخیره کند. از آن پس، هر کاربری که آن صفحه را ببیند (از جمله ادمینها) آسیب میبیند.
نحوهی شناسایی
- تمام فیلدهایی که محتوای کاربر را ذخیره و بعداً به کاربران دیگر نمایش میدهند را فهرست کنید.
- یک payload منحصربهفرد ارسال کنید و از یک حساب کاربری دوم (یا ناشناس) بررسی کنید که آیا اجرا میشود.
چرا خطرناکتر از نسخهی بازتابی است
اگر قربانی یک ادمین با دسترسی به پنل مدیریت باشد، این نوع XSS میتواند مستقیماً به تصاحب کامل پنل منجر شود — بدون هیچ تعامل اضافی از ادمین غیر از باز کردن یک صفحهی عادی.
راهحل
Sanitize کردن HTML ورودی با یک کتابخانهی استاندارد (نه regex دستی) در زمان ذخیره یا نمایش، بههمراه escape خروجی مناسب context و CSP.