در حال بارگذاری...
تست قابلیت اجرای کد JavaScript توسط مهاجم در مرورگر قربانی از طریق آسیبپذیریهای مختلف.
اهداف این درس
اجرای JavaScript مخرب شامل اجرای کد دلخواه در مرورگر قربانی است. این میتواند از طریق XSS، تزریق اسکریپت یا استفاده ناامن از توابعی مثل eval() رخ دهد.
قابلیت اجرای کد دلخواه روی سیستم قربانی از راه دور.
| تابع | خطر | جایگزین امن |
|---|---|---|
| eval() | بسیار بالا | JSON.parse() |
| Function() | بسیار بالا | توابع معمولی |
| setTimeout(string) | بالا | setTimeout(fn) |
| innerHTML | بالا | textContent |
| document.write() | بالا | createElement |
کد JavaScript برنامه را برای یافتن توابع خطرناک مثل eval، Function، innerHTML و document.write بررسی کنید.
بررسی کنید آیا دادههای کاربر قبل از استفاده در توابع خطرناک، اعتبارسنجی میشوند.
1// تزریق در eval2eval('alert(1)')34// تزریق در inner5element.innerHTML = '<img src=x onerror=alert(1)>'67// تزریق در setTimeout8setTimeout('alert(1)', 1000)هشدار
هرگز از eval()، Function() یا setTimeout(string) با دادههای کنترلشده توسط کاربر استفاده نکنید.
توصیه عملی
از ESLint با قوانین امنیتی مثل no-eval و no-implied-eval برای شناسایی توابع خطرناک استفاده کنید.
هر نقطهای که داده کاربر در JavaScript استفاده میشود، خطرناک است.
eval() خطرناکترین تابع JavaScript است.
CSP میتواند اجرای اسکریپتهای inline را محدود کند.
خروجیگیری مناسب مؤثرترین روش پیشگیری است.
کدام تابع JavaScript خطرناکترین است؟
چرا eval() خطرناک است؟
eval() رشتهای را بهعنوان کد JavaScript اجرا میکند. اگر داده کاربر در آن استفاده شود، مهاجم میتواند کد دلخواه اجرا کند.
CSP چگونه از اجرای کد مخرب جلوگیری میکند؟
CSP منابع مجاز اجرای اسکریپت را محدود میکند و میتواند اجرای inline script را مسدود کند.