لیست مجازات مجاز است. فقط اجازه می دهد تا پسوندهای ایمن و مهم برای عملکردهای تجاری - اطمینان حاصل کنید که اعتبار سنجی ورودی قبل از اعتبار سنجی پسوندها اعمال می شود.
- In the case of public access to the files, use a handler that gets mapped to filenames inside the application (someid >file. ext)
تهدیدات بارگذاری پرونده ¶
به منظور ارزیابی و دانستن اینکه چه چیزی برای اجرای کنترل وجود دارد ، دانستن اینکه با چه چیزی روبرو هستید برای محافظت از دارایی های شما ضروری است. بخش های زیر امیدوارم خطرات همراه با قابلیت بارگذاری پرونده را به نمایش بگذارد.
فایل های مخرب به
مهاجم پرونده ای را برای قصد مخرب ارائه می دهد ، مانند:
- بهره برداری از آسیب پذیری در تجزیه و تحلیل پرونده یا ماژول پردازش (به عنوان مثال بهره برداری از ImageTrick ، xxe)
- از پرونده برای فیشینگ استفاده کنید (به عنوان مثال فرم مشاغل)
- بمب های زیپ ، بمب های XML (که در غیر این صورت با عنوان Attack میلیارد می خندد) یا پرونده های عظیم به گونه ای برای پر کردن ذخیره سازی سرور که مانع و آسیب پذیری سرور می شود ، ارسال کنید.
- یک پرونده موجود را روی سیستم بازنویسی کنید
- محتوای فعال سمت مشتری (XSS ، CSRF و غیره) که در صورت بازیابی عمومی پرونده ها می تواند سایر کاربران را به خطر بیندازد.
بازیابی پرونده عمومی ¶
اگر پرونده بارگذاری شده به صورت عمومی قابل بازیابی باشد ، می توان به تهدیدهای اضافی رسیدگی کرد:
- افشای عمومی پرونده های دیگر
- با درخواست تعداد زیادی پرونده ، حمله DOS را آغاز کنید. درخواست ها کوچک هستند ، اما پاسخ ها بسیار بزرگتر هستند
- محتوای پرونده ای که می تواند غیرقانونی ، توهین آمیز یا خطرناک تلقی شود (به عنوان مثال داده های شخصی ، داده های دارای حق چاپ و غیره) که شما را برای چنین پرونده های مخرب میزبان می کند.
حفاظت بارگذاری پرونده
هیچ گلوله نقره ای در اعتبارسنجی محتوای کاربر وجود ندارد. اجرای یک رویکرد دفاعی در عمق مهم است که فرآیند بارگذاری را سخت تر و قفل تر به نیازها و الزامات سرویس قفل کند. اجرای چندین تکنیک مهم و توصیه می شود ، زیرا هیچ تکنیکی برای تأمین خدمات کافی نیست.
اعتبار سنجی پسوند ¶
اطمینان حاصل کنید که اعتبارسنجی پس از رمزگشایی نام پرونده رخ می دهد ، و یک فیلتر مناسب برای جلوگیری از برخی از بای پس های شناخته شده مانند موارد زیر تنظیم شده است:
- پسوند مضاعف ، به عنوان مثال. jpg. php ، جایی که به راحتی Regex . jpg را دور می زند
- بایت های پوچ، به عنوان مثالphp%00. jpg، که در آن . jpg کوتاه می شود و . php به پسوند جدید تبدیل می شود
- رجکس بد عمومی که به درستی تست نشده و به خوبی بررسی نشده است. از ایجاد منطق خودداری کنید مگر اینکه دانش کافی در این زمینه داشته باشید.
برای تجزیه و تحلیل صحیح و پردازش پسوند به Input Validation CS مراجعه کنید.
فهرست برنامه های افزودنی مجاز¶
مطمئن شوید که فقط از برنامه های افزودنی حیاتی برای کسب وکار استفاده می کنید، بدون اینکه اجازه هر نوع افزونه های غیر ضروری را بدهید. به عنوان مثال اگر سیستم نیاز دارد:
- آپلود تصویر، اجازه دهید یک نوع مورد توافق مطابق با الزامات تجاری باشد.
- cv آپلود کنید، پسوندهای docx و pdf را مجاز کنید.
بر اساس نیازهای برنامه، از کمترین آسیب و کم خطرترین نوع فایل برای استفاده اطمینان حاصل کنید.
مسدود کردن برنامه های افزودنی¶
انواع فایل های بالقوه مضر را شناسایی کنید و پسوندهایی را که به نظر شما برای سرویس شما مضر هستند مسدود کنید.
لطفاً توجه داشته باشید که مسدود کردن برنامه های افزودنی خاص به خودی خود یک روش حفاظتی ضعیف است. مقاله آسیب پذیری آپلود فایل نامحدود توضیح می دهد که چگونه مهاجمان ممکن است تلاش کنند چنین چکی را دور بزنند.
اعتبارسنجی نوع محتوا¶
نوع محتوا برای فایل های آپلود شده توسط کاربر ارائه می شود و به همین دلیل نمی توان به آن اعتماد کرد، زیرا جعل کردن آن بی اهمیت است. اگرچه برای امنیت نباید به آن اعتماد کرد، اما یک بررسی سریع برای جلوگیری از آپلود ناخواسته فایل هایی با نوع نادرست توسط کاربران فراهم می کند.
به غیر از تعریف پسوند فایل آپلود شده، می توان نوع MIME آن را برای محافظت سریع در برابر حملات آپلود فایل ساده بررسی کرد.
ترجیحاً می توان این کار را در رویکرد لیست مجاز انجام داد. در غیر این صورت، این را می توان در یک رویکرد لیست بلوک انجام داد.
اعتبار سنجی امضای فایل¶
در ارتباط با اعتبارسنجی نوع محتوا، اعتبار امضای فایل را می توان در برابر فایل مورد انتظاری که باید دریافت کرد بررسی و تأیید کرد.
این نباید به تنهایی مورد استفاده قرار گیرد، زیرا دور زدن آن بسیار رایج و آسان است.
پاکسازی نام فایل¶
نام فایل ها می توانند سیستم را به طرق مختلف به خطر بیندازند، چه با استفاده از کاراکترهای غیرقابل قبول و چه با استفاده از نام فایل های خاص و محدود. برای ویندوز، به راهنمای MSDN زیر مراجعه کنید. برای مشاهده کلی تر سیستم های فایل مختلف و نحوه برخورد آنها با فایل ها، به صفحه نام فایل ویکی پدیا مراجعه کنید.
به منظور جلوگیری از تهدید فوق ، ایجاد یک رشته تصادفی به عنوان نام پرونده ، مانند تولید UUID/GUID ، ضروری است. اگر نام پرونده به نیازهای تجاری مورد نیاز باشد ، اعتبار ورودی مناسب باید برای طرف مشتری (به عنوان مثال محتوای فعال که منجر به حملات XSS و CSRF می شود) و طرف برگشت (به عنوان مثال پرونده های ویژه رونویسی یا ایجاد) انجام شود. محدودیت های طول نام پرونده باید بر اساس سیستم ذخیره پرونده ها مورد توجه قرار گیرد ، زیرا هر سیستم محدودیت طول نام خود را دارد. در صورت نیاز به نام پرونده های کاربر ، اجرای موارد زیر را در نظر بگیرید:
- حداکثر طول را پیاده سازی کنید
- شخصیت ها را به یک زیر مجموعه مجاز به طور خاص ، مانند شخصیت های الفبایی ، Hyphen ، Spaces و دوره ها محدود کنید
- اگر این امکان پذیر نباشد ، شخصیت های خطرناک در لیست بلوک که می توانند چارچوب و سیستمی را که در حال ذخیره و استفاده از پرونده ها هستند به خطر بیندازند.
اعتبار سنجی محتوای پرونده ¶
همانطور که در بخش بازیابی پرونده عمومی ذکر شد ، محتوای پرونده می تواند حاوی داده های مخرب ، نامناسب یا غیرقانونی باشد.
بر اساس نوع مورد انتظار ، اعتبار سنجی محتوای فایل ویژه قابل استفاده است:
- برای تصاویر ، استفاده از تکنیک های بازنویسی تصویر ، هر نوع محتوای مخرب تزریق شده در یک تصویر را از بین می برد. این می تواند از طریق تصادفی انجام شود.
- برای اسناد مایکروسافت ، استفاده از Apache POI به اعتبار اسناد بارگذاری شده کمک می کند.
- پرونده های زیپ توصیه نمی شوند زیرا می توانند انواع پرونده ها را شامل شوند و بردارهای حمله مربوط به آنها بی شمار هستند.
سرویس بارگذاری پرونده باید به کاربران اجازه دهد محتوای غیرقانونی و صاحبان حق چاپ را گزارش دهند تا سوءاستفاده را گزارش دهند.
اگر منابع کافی وجود داشته باشد ، قبل از انتشار پرونده ها به عموم ، باید بررسی فایل دستی در یک محیط ماسهبازی انجام شود.
افزودن برخی از اتوماسیون به بررسی می تواند مفید باشد ، که یک روند سخت است و باید قبل از استفاده از آن به خوبی مورد مطالعه قرار گیرد. برخی از سرویس ها (به عنوان مثال ویروس در کل) API ها را برای اسکن پرونده ها در برابر هش های مخرب شناخته شده ارائه می دهند. برخی از چارچوب ها می توانند نوع محتوای خام را بررسی و تأیید کنند و آن را در برابر انواع فایل از پیش تعریف شده ، مانند کتابخانه نقاشی ASP. NET ، تأیید کنند. از تهدیدهای نشت داده ها و جمع آوری اطلاعات توسط خدمات عمومی مراقب باشید.
مکان ذخیره سازی فایل
مکانی که باید پرونده ها در آن ذخیره شوند ، باید بر اساس الزامات امنیتی و تجاری انتخاب شوند. نکات زیر با اولویت امنیتی تعیین شده است و فراگیر است:
- پرونده ها را روی یک میزبان متفاوت ذخیره کنید ، که امکان تفکیک کامل وظایف بین برنامه ارائه دهنده کاربر را فراهم می کند ، و آپلودهای فایل کنترل میزبان و ذخیره آنها.
- پرونده ها را در خارج از Webroot ذخیره کنید ، جایی که فقط دسترسی اداری مجاز است.
- پرونده ها را در داخل Webroot ذخیره کنید و آنها را فقط در مجوزهای نوشتن تنظیم کنید.
- در صورت نیاز به خواندن ، تنظیم کنترل های مناسب یک ضرورت است (به عنوان مثال IP داخلی ، کاربر مجاز و غیره)
ذخیره پرونده ها به صورت مورد مطالعه در پایگاه داده ها یکی از تکنیک های اضافی است. این گاهی اوقات برای فرآیندهای پشتیبان گیری اتوماتیک ، حملات غیر سیستم فایل و مشکلات مجوز استفاده می شود. در عوض ، این باعث می شود که درهای مربوط به عملکرد (در بعضی موارد) ، ملاحظات ذخیره سازی برای بانک اطلاعاتی و پشتیبان گیری آن را باز کند ، و این باعث می شود درب حمله SQLI باز شود. این فقط هنگامی توصیه می شود که DBA در تیم باشد و این روند نشان می دهد که در ذخیره سازی آنها در سیستم فایل ، بهبودی است.
برخی از پرونده ها پس از بارگذاری از طریق ایمیل یا پردازش می شوند و در سرور ذخیره نمی شوند. انجام اقدامات امنیتی مورد بحث در این برگه قبل از انجام هرگونه اقدام بر روی آنها ضروری است.
مجوزهای کاربر ¶
قبل از دسترسی به هر سرویس بارگذاری پرونده ، اعتبار مناسب باید در دو سطح برای کاربر بارگذاری یک پرونده رخ دهد: