كيف با امكاني تامين مركز الرفع الصور الخاص بي من رفع شيل او شيل بصيغة صورة في لغة php


التعليقات

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

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

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

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

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

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

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

function get_ext($name) {

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

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

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

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

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


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

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

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

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


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

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

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

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


برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

24.9 ألف متابع