دریافت فایل از کاربران راحت است، اما اگر به درستی طراحی نشده باشد، میتواند آسیبپذیریهای جدی ایجاد کند. حملهکنندگان ممکن است از آپلود برای اجرای کد خود، خشک کردن ظرفیت سرور، و توزیع فایلهای غیرمجاز استفاده کنند.
تهدیدات رایج به شرح زیر است:
اصل اساسی تدابیر "دفاع چندلایه (defense in depth)" است. طراحی چند لایه از تدابیر، به جای وابستگی به یک روش، مؤثر است.
هر پسوند را محدود کرده و پذیرش و رد را تنها بر اساس پسوند تعیین نکنید. امضای فایل (عدد جادویی) را بررسی کنید و محتوا را تأیید کنید. به هدر Content-Type اعتماد نکنید و تدابیر لازم برای جلوگیری از پسوندهای دوگانه یا بایت NULL را پیادهسازی کنید.
لطفاً نام فایلهایی که کاربر ارائه کرده است را به طور مستقیم ذخیره نکنید. از UUID یا هش + timestamp برای جایگزینی با نامهای منحصر به فرد استفاده کرده و نام اصلی را به عنوان متاداده جداگانه ذخیره کنید. همچنین باید به کاراکترهای خاص و محدودیت طول توجه کنید.
فایلهای آپلود شده باید در خارج از پوشه وبروت ذخیره شوند تا از اجرایی شدن مستقیم آن جلوگیری شود. اگر ممکن است، آنها را در یک فضای ذخیرهسازی اختصاصی (مانند S3) ذخیره کنید و لینک دانلود را از طریق نرمافزار ارائه دهید. پوشههای ذخیرهسازی باید بدون مجوز اجرایی و با حداقل مجوزهای خواندن و نوشتن محدود شوند.
حداکثر اندازه فایل را تعیین کنید و تعداد آپلودهای همزمان و کنترل نرخ را پیادهسازی کنید تا قابل اعتماد بودن خدمات را تأمین کنید. اگر فایلهای فشرده (مانند ZIP) را میپذیرید، باید هر فایل پس از استخراج را هم بررسی کنید.
بلافاصله پس از آپلود، یک اسکن ویروسی (اگر ممکن باشد با چندین موتور) انجام دهید و PDF/Office را با CDR (Content Disarm & Reconstruct) بیخطر کنید. برای تصاویر، تجدید کدگذاری (بارگذاری → تولید فایل جدید) را انجام دهید تا دادههای غیرمجاز embedded را حذف کنید.
ارتباطات باید حتماً با TLS (HTTPS) محافظت شوند و تدابیر مانند توکن CSRF پیادهسازی شوند. در پاسخ دانلود، از Content-Disposition: attachment
یا X-Content-Type-Options: nosniff
استفاده کنید تا از بروز خطا در مرورگر جلوگیری شود.
جزئیات مربوط به اینکه چه کسی چه فایلی را در چه زمانی اداره کرده را در یک لاگ ذخیره کنید و هشدارهایی برای رفتار غیرعادی (آپلود با فرکانس بالا یا رد شدن حجم زیاد) تعیین کنید. نگهداری هش برای تائید انسجام فایلها نیز مؤثر است.
پس از پیادهسازی، آزمونهای آسیبپذیری خاص آپلود فایل (وارد کردن شل، دور زدن پسوند، عبور از مسیر، و غیره) را اجرا کرده و بهطور دورهای بازبینی کنید.
خدماتی که در اینجا معرفی میشود UploadF (uploadf.com) است که بهخوبی از کامپیوتر و گوشی همراه پشتیبانی میکند، امکان کشیدن و رها کردن را دارد و این اجازه را میدهد که 100 فایل بهصورت همزمان آپلود شود. این در حالی است که در طراحی خدمات، باید موارد زیر را مورد توجه قرار دهید.
موارد چک | نکات اجرایی / تأیید |
---|---|
محدودیت لیست سفید پسوندها | فقط نوعهای ضروری را مجاز کنید. استفاده از لیست سیاه بهعنوان یک روش کمکی. |
بررسی MIME / امضای فایل | بررسی کنید که آیا پسوند و محتویات آن با هم مطابقت دارند (تأیید عدد جادویی). |
تغییر نام فایل | تغییر به UUID یا نام هش و مدیریت نام اصلی به عنوان متاداده. |
حذف کاراکترهای خاص | حذف یا رد کاراکترهایی مانند `/`, `\`, `..`, NULL و غیره. |
دایرکتوری محل ذخیرهسازی | ذخیرهسازی در خارج از وبروت یا فضایی اختصاصی. |
مجوزهای پوشه | منع اجرایی و حداقل مجوز خواندن و نوشتن (قانون حداقل مجوز). |
حداکثر / حداقل اندازه فایل | مشخص کردن حداکثر و چک کردن پس از استخراجهای ZIP و غیره. |
کنترل آپلود همزمان | محدودیت تعداد موازی، کنترل نرخ، و تنظیم زمان انقضا. |
اسکن ویروس / CDR | اسکن بلافاصله پس از آپلود و پردازش بیخطرسازی در صورت لزوم. |
رمزگذاری ارتباطات (HTTPS) | اجباری کردن TLS (برای جلوگیری از حملات مرد میانی). |
تدابیر CSRF | پیادهسازی بررسی مبتنی بر توکن. |
تنظیم هدرهای پاسخ | اضافه کردن Content-Disposition: attachment و X-Content-Type-Options: nosniff . |
ثبت لاگ و هشدار | نظارت بر اقدامات آپلود و اعلام هر گونه غیرعادی. |
بازبینی امنیتی دورهای | اجرای آزمونهای آسیبپذیری و نفوذ بهصورت دورهای. |
حذف خودکار فایلهای قدیمی | طراحی برای حذف کامل پس از انقضای مدت نگهداری. |
کنترل دسترسی / مجوز | مدیریت سختگیرانه دسترسی بر اساس هر کاربر / گروه. |
عملکرد آپلود فایل هم شامل راحتی و هم ریسک است. با گنجاندن تدابیر چندلایه ذکر شده در متن (لیست سفید، بررسی امضا، تفکیک محل ذخیرهسازی، تدابیر مقابله با بدافزار، ثبت لاگ و غیره) میتوان ریسکهای حمله را به طرز چشمگیری کاهش داد.
مهم است که کاربران احساس کنند "استفاده از آن آسان و در عین حال ایمن است". به عنوان مثال، خدماتی مانند UploadF (uploadf.com) که دارای ویژگیهای مدیریت مانند حذف جداگانه یا تنظیم زمان ذخیرهسازی است، میتواند احساس اطمینان بیشتری به کاربران بدهد.
※ موارد فوق نمونههایی از منابع در زمان ایجاد مقاله است. برای اطلاعات دقیقتر از مستندات رسمی هر یک و آخرین تهدیدات، لطفاً آنها را بررسی کنید.