إذا كان السيرفر الخاص بك هو آباتشي فيمكنك أن تخصص مجلد رفع الصور أو الملفات لا يقم بتنفيذ ملفات .php عبر ملف htaccess

أما إذا كان ويندوز سيرفر فيمكنك منع تنفيذ صفحات .aspx من خلال web.config

سيقوم السيرفر بهذه الحالة بعرض الكود بوضع نصّي فقط ولا تنفيذي للملف أو الشيل, بالطبع في سكريبت رفع الملفات حدّد بمنع رفع أي ملف بامتدادات معينة.

يمكنك البحث عن المزيد :)

بالتحكم بالصيغ المسموحة له اسمح بإمتدادت الصور فقط اذا كان السكربت من برمجتك استخدم دالة البحث عن النصوص لكي تتحقق من اسماء الملفات المرفوعة مابعد ( . )

  • ليست الطريقة الأمثل إختبار الإمتداد فقط، فيمكن تخطيها بتغيير الإمتداد لأي ملف تريد رفعه.

استخدم الطريقة اليدوية اي استخرج امتداد الملف بنفسك كما التالي

function get_ext($name) {

    $name_array = explode(".", $name);
    $extention = strtolower(end($name_array));
    return $extention;
}

ولكن هل يعمل ملف php محولة بإمتداد صورة وطلبنا الملف برابط مباشر ؟

هذا الموضوع يتحدث عن الأمر بإستفاضة

https://www.owasp.org/index.php/Unrestricted_File_Upload

إستخدم التعرف على نوع الملف من خلال Mime type:

http://php.net/manual/en/function.mime-content-type.php

طريقتي في التأمين


1- جلب امتداد الملف وذلك من خلال تقسيم اسم الملف بالنقاط ( يتم أخذ اخر جزء من الملف بعد اخر النقطه كإمتداد للملف )

2- التأكد ان امتداد الملف مسموح به

3- تغيير اسم الملف ووضع الامتداد الذي تم استخراجه في اخر الاسم

4- حماية مجلد الرفع من تشغيل ملفات php بواسطة htaccess.


ملاحظة :- الفائدة من تغيير اسم الملف هو ضمان عدم وجود اكثر من نقطه

ففي بعض الاحيان يتم كتابة الملف بالشكل الاتي shell.php.rar ويتم رفع الشل وتشغيله بشكل سليم

ولاكن عند تغيير اسم الملف لإسم جديد سيكون كالتالي مثلا xvvff223.rar

وعند طلب رابط الملف سيتم التحميل على انه ملف مضغوط


برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

16.4 ألف متابع