سلام آقای خسروجردی، خسته نباشید.
من قبلا در مورد امنیت پروژه دوره ازتون پرسیدم و به من جواب کاملی دادید که یکی شون محدود کردن کاربر برای ارسال فایل با حجم بیشتر از 2 مگابایت(2048 KB) بود.
می خواستم بدونم اگه ما این محدودیت رو داخل request اعمال کنیم و مثلا 2 میلیون کاربر داشته باشیم و ظرفیت هاست 2 گیگابایت باشه، اینجوری باز هم اگه هر کاربر یک فایل 2048 مگابایتی آپلود کنه کل ظرفیت هاست پر میشه و حتی از ظرفیت هاست هم خیلی بیشتره این مقدار و به مشکل خیلی بزرگی بر میخوریم، به نظرتون برای این مشکل باید چیکار کنیم؟
سلام وقت بخیر
برای مدیریت مشکل پر شدن ظرفیت هاست با آپلود فایلها توسط کاربران، راهکارهای زیر پیشنهاد میشود:
محدودیت تعداد آپلودها: علاوه بر محدودیت حجم فایل (2048 کیلوبایت)، تعداد فایلهای قابل آپلود توسط هر کاربر را محدود کنید (مثلاً 1 یا 2 فایل در روز).
استفاده از ذخیرهسازی ابری: بهجای ذخیره فایلها روی هاست اصلی، از سرویسهای ذخیرهسازی ابری مانند Amazon S3، Google Cloud Storage یا Backblaze استفاده کنید که مقیاسپذیر و مقرونبهصرفه هستند.
فشردهسازی فایلها: فایلها را پیش یا پس از آپلود فشرده کنید (مانند استفاده از فرمت WebP برای تصاویر).
مدیریت خودکار فضا: سیستمی برای حذف خودکار فایلهای قدیمی یا غیرضروری پس از مدت مشخص پیادهسازی کنید.
تعیین سقف فضای ذخیرهسازی: برای هر کاربر محدودیت فضای کلی (مثلاً 10 مگابایت) اعمال کنید تا استفاده از فضای هاست کنترل شود.
ببخشید:
1. محدودیت تعداد آپلودها: چجوری تعداد فایلهای قابل آپلود توسط هر کاربر را محدود کنیم (مثلاً 1 یا 2 فایل در روز).
2. استفاده از ذخیرهسازی ابری: آیا از این سرویس هایی که گفتید داخلشون سرویس رایگان هست؟
3. فشرده سازی فایل : چجوری باید تصاویری که توسط کاربر آپلود میشن رو با فرمت WebP ذخیره کنیم چون وقتی از کد زیر استفاده می کنیم خودش با همون فرمتی که فایل داره ذخیره میکنه
<input type="file" />
4. تعیین سقف فضای ذخیرهسازی: ما فقط زمانی که کاربر یک فایل رو آپلود میکنه داخل request میتونیم بگیم حداکثر حجم اون فایل مثلا (2048 کیلوبایت) باشه، برای اینکه بگیم هر کاربر کلا مثلا (20 مگابایت) فقط بتونه آپلود کنه باید چیکار کنیم؟
میشه برای قسمت های 1 و 3 و 4 یک نمونه کد مثال بزنید.