السلام عليكم
مأخرا كنت قد عملت على تصميم وتعديل سكربت لرفع الملفات
بحيث يتم رفع الملف واضافة اسم الملف بقاعدة البيانات
لسهولة الرجوع له لحقا وللإداره
ولكن للأسف الأسكربت أدى إلى اختراق الموقع وخسارة جميع ملفاتى وأعمالى بالموقع.
الأسكربت المستخدم هو
كود PHP:
<?php
session_start();
include ("site/resource/functions.php");
include ("site/resource/config.php");
include ("upload_style.php");
$conn = connect_db($database,$db_server,$db_user,$db_pass);
////////////////////////////////////////START THE CODE/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////file_max_size/////////////////////////////////
$sqlx = "SELECT * FROM ". $db_prefix. "config WHERE name ='visitors_max_size'";
$result = mysql_query($sqlx);
if ($result){
if ($data = mysql_fetch_array($result)){
$visitors_max_size = $data[info];
}}
//////////////////PULL INFO FROM PREVIOUS PAGE///////////////////////////////////////
$max_size = $visitors_max_size *1024; // Maximum filesize ( bytes )
$category = $_POST["category"];
$file_name = $_POST["file_name"];
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$submit = $_POST[ "upload" ];
$files = $_FILES[ "content" ];
$php = $_SERVER[ "PHP_SELF" ];
$size = $files[ "size" ];
$type = $files[ "type" ];
$name = $files[ "name" ];
$temp = $files[ "tmp_name" ];
//-----------------
//.........................
if ($submit ==""){ // HERE IF USER DID NOT CLICK ON UPLOAD BUTTON ONLY PRESS ENTER
$submit = "Upload";
}
//-----------------
if ($file_name == ""){ // HERE IF USER DID NOT ADD ANY PIC NAME THEN CURRENT PICTURE NAME WILL BE ADDED FOR EXAMPLE XXXX.JPG
$file_name = $name;
}
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
$sql = "SELECT * FROM ". $db_prefix. "config WHERE name ='site URL'";
$result = mysql_query($sql);
if ($result){
if ($data = mysql_fetch_array($result)){
$site_URL = $data[info];
}}
////////////////////////////////////////////////////////////////////
$sql = "SELECT * FROM ". $db_prefix. "config WHERE name ='visitors_upload-download_paths'";
$result = mysql_query($sql);
if ($result){
if ($data = mysql_fetch_array($result)){
$upload_path = $data[info];
$download_path = $data[notes];
}}
////////////////////////////////////////////////////////////////
$today_date=date("Y-m-d");
$path = $upload_path;
$filesize = $size /1024;
if($filesize < 1000){
$filesize = round($filesize);
$filesize = "$filesize KB";
}elseif($filesize >= 1000 && $filesize < 1048576){ // MORE THAN 1MB AND LESS THAN 1GB
$filesize = $filesize /1024;
$filesize = round($filesize);
$filesize = "$filesize MB";
}else{ // NO WAY TO HAVE IMAGE WITH THIS SIZE BUT STILL PUT IT (MEAN IMAGE 1GB +)
$filesize = $filesize /1048576;
$filesize = round($filesize);
$filesize = "$filesize GB";
}
//////////////////////////////////
///////////////////
upload_header();
///////////////////
/////////////////////NEW NAME//////////////////////////////////
$att = strrchr($name,'.'); // لإضهار إمتداد الملف المختار
$newname = date("j_n_Y")."_".date("h_i_s_A").$att;
/////////////////////NEW NAME//////////////////////////////////
if( isset($submit, $files ) && $size > 0 ) {
// ALL ALLOW TYPES ARE ON THE CONFIG.PHP $mimes is on the config.php
if( $size <= $max_size ) {
$search = in_array( $type, $visitors_allow_type );
if( $search == true && move_uploaded_file( $temp, "$path$newname" ) ) {
$output = "تم رفع الملف بنجاح";
}else{
$output = "لا يجوز رفع مثل هذا الملف";
}
} else {
$output = "الملف كبيرة جداً"; }
}else{
$output = "لم يتم تحميل الملف";
}
///////////////////////////////////////////
echo "
<p> </p>
<p align='center'><font face='Tahoma' size='2'> $output</font></p><p align='center'>
";
if($output == "تم رفع الملف بنجاح"){
$sql = "INSERT INTO ". $db_prefix. "visitors_upload VALUES('','".$newname."','".$file_name."','".$category."','".$type."','".$size."','','','".$today_date."','')";
$result = mysql_query($sql);
//////////////
$sql = "SELECT * FROM ". $db_prefix. "visitors_upload WHERE name ='".$newname."';";
$result = mysql_query($sql);
if ($result){
if ($data = mysql_fetch_array($result)){
$fileID=$data[id];
}}
/////////////////UPDATE THE NEW URL FIELD AFTER GOT THE ID/////
// $new_url = "$site_URL$download_path/dl.php?id=$fileID";
$new_url = "dl.php?id=$fileID";
$sql = "UPDATE ". $db_prefix. "visitors_upload SET new_url= '".$new_url."' WHERE id=". $fileID. ";";
$result = mysql_query($sql);
///////////////////////////////////////////////////////////////
$search = in_array( $type, $mimes ); // HERE TO DISPLAY THE PICTURE IF IT WAS PICTURE &&&&& TO GIVE USERS DIRECT LINK IF IT'S IMAGE OTHERWISE DOWNLOAD PAGE
if($search == true){
print"
<p align='center'><img border='0' src='$path$newname' width='200' height='160'></p>
";
$download_url = "$site_URL/$path$newname";
}else{
$download_url = "$site_URL$download_path$new_url";
}
print "
<div align='center'>
<table border='1' width='50%' dir='ltr' bgcolor='#9AE7FF' cellspacing='1'>
<tr><td><p align='center'><b>$file_name</b></td>
<td width='25%'>
<p align='right'><b><font face='Tahoma' size='2'>أسم الملف</font></b></td></tr>
<tr><td>
<p align='center'><span lang='en-us'><b><font face='Tahoma' size='2'>$category</font></b></span></td>
<td width='25%'>
<p align='right'><b><font face='Tahoma' size='2'>تصنيف الملف</font></b></td>
</tr><tr>
<td align='center'>
<p align='right'>
<input type='text' name='T1' size='80' value='$download_url'></p>
</td>
<td width='25%'>
<p align='right'><b><font face='Tahoma' size='2'>رابط التحميل</font></b></td>
</tr><tr><td>
<p align='center'><b>$type</b></td>
<td width='25%'>
<p align='right'><b><font face='Tahoma' size='2'>نوع الملف</font></b></td>
</tr><tr><td>
<p align='center'><b><span lang='en-us'>$filesize</span></b></td>
<td width='25%'>
<p align='right'><b><font face='Tahoma' size='2'>حجم الملف</font></b></td>
</tr></table></div>
";
}
print"
<br>
<div align='center'>
<table border='0' width='25%' cellspacing='1'>
<tr><td width='50%' align='center'>
<form method='POST' action='index.php'>
<p><input type='submit' value='إضافة ملف جديد' name='B2' style='font-family: Tahoma; font-size: 10pt'></p>
</form></td></tr></table>
</div>
";
///////////////////
upload_footer();
///////////////////
//////////////////////////////////////////END THE CODE///////////////////////////////////////////////////////////////////////////////////////
mysql_free_result($result);
close_conn_db($conn);
أرجوا الإفادة اين الثغره الأمنيه الموجوده بالأسكربت ومساعدتى بتعديلها