ممكن الكود

مرحبا اخوي
أول شي
خزن الملف المرفوع في مكان ولنفرض انه طبعا في غرض من ورا الموضوع ماحد راح يعرف مكان الملف الأصلي على السيرفر
www.domain.com/uptemp
ثاني شي
عند طلب الملف عبر المتصفح اطلبه بالشكل التالي
www.domain.com/down.php?failname=hhhhhh.gif
محتوى ملف down.php
كود PHP:
<?
//########<!----- BY S6UR ------>###########//
$filename = $_GET['filename'];
//### هنا ركز شوي راح نمنعه من تحميل ملفات الموقع وقرائتها مثل الكونيق وغيره من الملفات الهامه ترى يستطيع تحميلها اذا ماحميتها بشكل مناسب ##//
$filename=str_replace("../","/",$filename);
$filename=str_replace("..","/",$filename);
//##########################################//
//استخراج مكان تخزين الملفات الأصلي
$filename="../uptemp/".$filename;
$filename = realpath($filename);
//تحديد نوع امتداد الملف
$file_extension = strtolower(substr(strrchr($filename,"."),1));
//تحديد نوع ال MIME لكل امتداد علشان يتم وضعه بالهيدرز
switch ($file_extension) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpe": case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "php":
case "htm":
case "html":
//###################### الأمتدادات الممنوعه ضعها هنا ####################//
case "txt": die("أمتداد غير معروف لدينا"); break;
default: die("أمتداد غير معروف لدينا");
}
if (!file_exists($filename)) {
die("أمتداد غير معروف لدينا");
}
//هنا علشان يعرض الصور مباشره بدون تحميلها يعني استثناء وهنا بداية الهيدرز
header("(anti-spam-(anti-spam-(anti-spam-content-type:))) image/$file_extension");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
header("Content-Disposition: inline; filename=\"".basename($filename)."\";");
//طباعة الملف المطلوب للمتصفح
@readfile("$filename");
?>
طبعا الكود ساعدني بفكرته أبن الخليج و MSHAER.NET
بالطريقه هذي حتى لو رفع شل للموقع ماراح يقدر يشغله لسببين
السبب الأول
مايعرف مكانه الأصلي داخل الموقع
السبب الثاني
الهيدرز راح يجبر المتصفح على تحميل الملف وليس تشغيله وتستطيع زيادة الامتدادات وايقاف التنفيذ وعدم تحميل اي ملف ايضا بمجرد وضع d
كود PHP:
case "php": die("أمتداد غير معروف لدينا"); break;
default: die("أمتداد غير معروف لدينا");
طبعا الصور بالكود السابق راح يتم عرضها مباشره بدون التحميل وهذا مايميز
كود PHP:
header("Content-Disposition: inline; filename=\"".basename($filename)."\";");
فهي تعامل الملف على حسب نوعه بخلاف
كود PHP:
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
جربو الكود ودعواتكم لنا
في نصيحه مهمه للأخوان أصحاب مراكز التحميل التي لاتعتمد على قواعد البيانات
عند أعادة تسمية الملف
حاول تضع الآي بي تبع الملف في اسمه بطريقه ما+ تاريخ رفع الملف +كود عشوائي
بحيث لو واحد ازعجك برفع ملفات تغضب الله ضع الاي بي حقه بداية السكربت بحيث لو كان الاي بي موجود ضمن مصفوفة الايبيات المحظوره امنعه من التحميل وريح راسك
أيضا راقب الأخطاء اللي يتسبب فيها الزائر عند تحميل أي ملف في كل خطأ خزن معلومات الزائر والخطأ والمكان الذي يحاول الزائر الدخول له في حال الأختراق لاسمح الله بتعرف طريقة دخوله وطريقة اغلاق الثغره سهله باذن الله اذا عرف السبب
موفقين وفمان الله