در حال بارگذاری...
تست آپلود فایلهای غیرمنتظره (Unexpected File Types) برای اطمینان از اینکه برنامه فقط فایلهای مجاز را میپذیرد.
اهداف این درس
آپلود فایل غیرمنتظره شامل ارسال فایلهایی با پسوند، نوع یا محتوای غیرمجاز است. مهاجم میتواند با تغییر پسوند یا Content-Type، فایل مخرب را به برنامه تزریق کند.
فایلی که پسوند، نوع یا محتوای آن با انتظار برنامه مطابقت ندارد.
| روش | توضیح | مثال |
|---|---|---|
| تغییر پسوند | تغییر پسوند فایل | shell.php.jpg |
| تغییر Content-Type | تغییر نوع MIME | image/jpeg به جای application/php |
| Double Extension | استفاده از دو پسوند | shell.php.jpg |
| Null Byte | استفاده از کاراکتر null | shell.php%00.jpg |
تمام نقاط آپلود فایل در برنامه را شناسایی کنید: آپلود تصویر، آپلود مستندات، آپلود پروفایل و موارد مشابه.
1// پسوندهای مجاز2image.jpg, image.png, image.gif34// پسوندهای غیرمجاز5shell.php, shell.asp, shell.jsp6shell.php.jpg, shell.php%00.jpg7shell.phtml, shell.pht, shell.php5هشدار
هرگز فقط به پسوند فایل اعتماد نکنید. مهاجم میتواند پسوند را تغییر دهد.
توصیه عملی
از کتابخانههای معتبر مثل multer (Node.js) یا Intervention Image (PHP) برای مدیریت آپلود فایل استفاده کنید.
هرگز فقط به پسوند فایل اعتماد نکنید.
نوع فایل باید از محتوا بررسی شود، نه پسوند.
فایلهای آپلود شده باید در دایرکتوری جداگانه ذخیره شوند.
دسترسی اجرایی به فایلهای آپلود شده باید محدود شود.
کدام روش بهترین بررسی نوع فایل است؟
چرا فقط بررسی پسوند فایل کافی نیست؟
زیرا مهاجم میتواند پسوند فایل را تغییر دهد. مثلاً فایل .php را به .jpg تغییر دهد.
بهترین روش بررسی نوع فایل چیست؟
بررسی Magic Number (File Signature) و Content-Type در کنار پسوند فایل.