• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اجرای کد php داخل فایل JPEG
#1
سـلام ، من خیلی جاها این مطلب رو خوندم و شنیدم امکان آپلود فایل در سایت یک روزنه امنیتی است و هکر می تونه برخی کدهای مخرب رو به سایت ترزیق کنه ، یکی از مواردی هم که زیاد بهش اشاره شده اینکه تنها به بررسی پسوند اکتفا نکنیم چون این امکان وجود داره که مثلا هکر فایلی با نام a.php.jpg رو اپلود کنه که در اصل این یه فایل php هست که بهش jpg اضافه شده

**
من همچین فرمی درست کردم که فایل رو دریافت می کنه
کد پی‌اچ‌پی:
<html>
<
body>

<
form action="upload_file.php" method="post" enctype="multipart/form-data">
<
label for="file">Filename:</label>
<
input type="file" name="file" id="file"><br>
<
input type="submit" name="submit" value="Submit">
</
form>

</
body>
</
html

یه پوشه ای هم بنام اپلود ساختم و در در فایل upload_file.php این کدها رو نوشتم

کد پی‌اچ‌پی:
if ($_FILES["file"]["error"] > 0){
    echo 
"Error: " $_FILES["file"]["error"] . "<br>";
}else{
    echo 
"Upload: " $_FILES["file"]["name"] . "<br>";
    echo 
"Type: " $_FILES["file"]["type"] . "<br>";
    echo 
"Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo 
"Stored in: " $_FILES["file"]["tmp_name"];
             if (
file_exists("upload/" $_FILES["file"]["name"])){
            echo 
$_FILES["file"]["name"] . " already exists. ";
        }else{
            
move_uploaded_file($_FILES["file"]["tmp_name"],
            
"upload/" $_FILES["file"]["name"]);
            echo 
"Stored in: " "upload/" $_FILES["file"]["name"];
        } 

می بنید که به هیچ وجه پسوندها رو بررسی نکردم ، ساختار فایل هم بررسی نکردم ، اما وقتی فایل a.php رو که حاوی چند دستور php هست ، اپلود می کنم و بعدش میخوام اجرا کنم مرورگر این خطا رو نشون می ده

[عکس: a0xn_eror.jpg]

چرا با وجودی اینکه من هیچ فیلتری انجام ندادم بازم این فایل اجرا نشد ؟!
در اصل من همه اینا رو پرسیدم چون یه جایی شنیده بودم که PHP رو میشه به صورت های مختلف نصب کرد ؟ مثلا چون الان php من به صورت ماژولار نصب شده اجرا نشده ولی اگه php به صورت .... نصب می شد اجرا می شد . ((اون .... چیزی که یادم رفته ) ، php رو به چند حالت میشه نصب کرد ؟
  پاسخ
تشکر شده توسط :
#2
ساده بگم:
میشه file.php رو آپلود کرد.
میشه file.php.jpg رو آپلود کرد و در در صورتی که تنظیمات خاصی روی وب سرور باشه، اونوقت اجرا میشه
میشه file.jpg رو داخلش بصورت دستی کدهای PHP گذاشت و آپلود کرد - در اینصورت تصویر فاسد میشه و فاقد هرگونه قابلیت نمایشی
میشه file.jpg رو داخلش با برنامه های خاص/editor کدهای PHP گذاشت و آپلود کرد - در اینصورت تصویر سالم عادی می مونه و قابلیت نمایش هم داره

^ میشه داخل تمام اینها حتی کدهای javascript گذاشت

حالا ببین راهکار برای هرکدوم از اینها چیه. دونه دونه حل کن
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : kasbookar shaer_bisvad ayoubsys
#3
برای امنیت بیشتر از کتابخانه ی GD استفاده کنید.البته با فرمت gif مشکل داره چون تصویر را از حالت متحرک خارج میکنه. که اونم فکر میکنم راه حلی داره . که فرصت نکردم زیاد روش کار کنم. ولی همین GD خوبه.
  پاسخ
تشکر شده توسط : shaer_bisvad


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان