SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

How to securely upload files with PHP | چگونه یک آپلودر امن در php داشته باشیم

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • How to securely upload files with PHP | چگونه یک آپلودر امن در php داشته باشیم

    آسیب پذیری آپلود فایل جزو خطرناک ترین آسیب پذیری های موجود در وب میباشد به واسطه این آسیب پذیری نفوذگر به سرعت شل یا فایل مخرب خود را آپلود و از سایت شما دسترسی میگیرد .

    بارگذاری فایل ها در PHP با تابع move_uploaded_file () به دست می آید.

    فرم HTML برای بارگذاری تک یا چند فایل باید شامل ویژگی enctype = "multipart/form-data" باشد. از روش POST استفاده کنید:

    کد:
    <form method="post" enctype="multipart/form-data" action="upload.php">
    File: <input type="file" name="pictures[]" multiple="true">
    <input type="submit">
    </form>
    و اسکریپت upload.php به شکل زیر است:

    کد:
    <?php
    
    foreach ($_FILES['pictures']['error'] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
    $tmpName = $_FILES['pictures']['tmp_name'][$key];
    // basename() may prevent directory traversal attacks, but further
    // validations are required
    $name = basename($_FILES['pictures']['name'][$key]);
    move_uploaded_file($tmpName, "/var/www/project/uploads/$name");
    }
    }
    فایلهای بارگذاری شده باید از لحاظ امنیتی معتبر باشند. هنگامی که بارگذاری به درستی ایمن نشده باشد ، نفوذ های زیادی رخ می دهد. تصور کنید یک مهاجم shell.php را بارگذاری می کند که در دسترس عموم قرار دارد.



    با آپلود شل از سایت و سرور دسترسی حاصل میشود و کلیه اطلاعات شما و سایتهای موجود بر روی سرور در خطر است تا انتهای این مقاله با ما باشید تا راه حل هایی به شما پیشنهاد بدهیم .

    راه حل های پیشنهادی :

    پیمایش دایرکتوری | Directory traversal
    برای جلوگیری از حملات عبور از فهرست (a.k.a. traversal) ، از basename () مانند تصویر بالا استفاده کنید ، یا حتی بهتر ، نام فایل را کاملاً مانند مرحله بعد تغییر دهید.

    تغییر نام فایلهای بارگذاری شده
    تغییر نام فایلهای بارگذاری شده از نامهای تکراری در مقصد بارگذاری شما جلوگیری می کند و همچنین از حملات مرور فهرست جلوگیری می کند. اگر می خواهید نام فایل اصلی را حفظ کنید ، می توانید آن را در پایگاه داده برای بازیابی در آینده ذخیره کنید. به عنوان مثال ، تغییر نام فایل با microtime () و تعدادی شماره تصادفی

    نوع فایل را بررسی کنید
    به جای تکیه بر پسوندهای فایل ، می توانید نوع mime یک فایل را با finfo_file () دریافت کنید:
    برای تصاویر ، که قابل اطمینان تر است ، اما هنوز به اندازه کافی خوب نیست ، از تابع getimagesize () استفاده کنید .

    اندازه فایل را بررسی کنید
    بررسی اندازه فایل بارگذاری شده برای بارگذاری نکردن سرور با فایل (های) بزرگ بسیار مهم است. هنگام بررسی اندازه فایل بارگذاری شده ، چندین سطح اصلی وجود دارد که باید به آنها توجه کنید.

    ذخیره سازی بارگذاری ها در یک مکان خصوصی
    به جای ذخیره فایلهای بارگذاری شده در یک مکان عمومی در https://example.com/uploads ، ذخیره آنها در یک پوشه غیرقابل دسترسی عموم یک عمل خوب است. برای تحویل این پرونده ها ، از اسکریپت های پروکسی استفاده می شود.

    اعتبارسنجی سمت مشتری
    برای تجربه کاربری بهتر ، HTML ویژگی پذیرش را برای محدود کردن انواع فایل ها با پسوند یا نوع mime در HTML ارائه می دهد ، بنابراین کاربران می توانند خطاهای اعتبارسنجی را به سرعت ببینند و فقط انواع فایل مجاز را در مرورگر خود انتخاب کنند. با این حال ، پشتیبانی از مرورگر در زمان نوشتن این مقاله محدود است. به خاطر داشته باشید که تأیید اعتبار از طرف مشتری به راحتی توسط هکرها قابل دور زدن است. مراحل اعتبارسنجی سمت سرور که در بالا توضیح داده شد ، اشکال مهمتری برای اعتبارسنجی هستند.

    پیکربندی سرور
    اعتبار سنجی سمت سرور ذکر شده در بالا را می توان با قرار دادن کد سفارشی در داخل تصویر با ابزارهایی مانند jhead ، دور زد و فایل را اجرا کرد و به عنوان PHP تفسیر کرد.

    به همین دلیل اجرای انواع فایلها نیز باید در سطح سرور انجام شود.

    آپاچی
    اطمینان حاصل کنید که Apache به گونه ای پیکربندی نشده است که چندین فایل را یکسان تفسیر کند (به عنوان مثال ، تصاویری که به عنوان فایل های PHP تفسیر می شوند). از دستورالعمل ForceType برای اعمال نوع در فایل های بارگذاری شده استفاده کنید.

    برای ساخت یک آپلودر امن نیاز دارید مراحل پیشنهادی را بر روی آپلودر خود پیاده نمائید ، میتوانید از گوگل برای پیدا کردن نمونه های مختلف استفاده کنید .
    -----------------------------SAFE MASTER---------------------------
    تاپیک هکر های تازه وارد
صبر کنید ..
X