‹ بازگشت به کتابخانه‌ی رایت‌آپ‌ها
XSS — DOM-based / Mutation شدت: بالا

DOM-based XSS از طریق location.hash بدون رفت‌وبرگشت به سرور

وقتی کل مسیر آلوده‌شدن (source تا sink) فقط در جاوااسکریپت سمت کلاینت اتفاق می‌افتد و در لاگ سرور هم دیده نمی‌شود.

نویسنده: تیم PentesterHub

در DOM-based XSS، داده‌ی آلوده هرگز به سرور فرستاده نمی‌شود؛ یک اسکریپت سمت کلاینت مقداری مثل location.hash یا document.referrer را می‌خواند (source) و بدون sanitize در یک sink خطرناک مثل innerHTML یا eval() قرار می‌دهد.

نحوه‌ی شناسایی

چرا شناسایی سخت‌تر است

چون این ترافیک به سرور نمی‌رسد، هیچ WAF یا لاگ سمت سرور آن را نمی‌بیند؛ باید حتماً کد جاوااسکریپت واقعی را مرور کرد، نه فقط پاسخ‌های HTTP را.

راه‌حل

استفاده از textContent به‌جای innerHTML هر جا ممکن است، یا sanitize با یک کتابخانه‌ی معتبر قبل از هر sink خطرناک.

تمرین عملی در آزمایشگاه‌های XSS — DOM-based / Mutation ›