سلام
@paressep28
یه تست بگیرید ران کنید کد رو متوجه میشید
$file_ext = substr($filename, strripos($filename, '.')); // get file name
2 تابع درون هم صدا زده شده!
یکی از نکاتی که خیلی میتونه کمکتون کنه که اون فایل ارسالی رو با mime type چک بکنید نه پسوندش
یعنی مثلا اگر فایل ارسالی jpg بود شما با image/jpg چک کن
در این صورت اگه کسی فایل مخربی رو آپلود بکنه به هیچ عنوان اجازه آپلود نمیده
سلام
@paressep28
طی 3 فرایند باید این کار انجام بشه
1) اول اینکه پسوند های مجاز رو توی اسکپریت ولیدیشن کنید که اصلا نتونه آپلود کنه!
2) سمت سرور آنتی شلر های معروف مثل CXS رو نصب کنید که اگرم آپلود شد حذف کنه
3) توابع امنیتی توی PHP باید از سمت سرور حتما و حتما بسته بشه ، که اگرم آپلود شد اجازه اجرا به اینگونه شل ها ندن
که اکثر این شل ها با توابع خطرناک PHP اجرا میشن.
<?php
echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>
داخل لاراول هم که با validation ها به صورت زیر میتونید چک کنید. مثلا برای چک کردن تصویر :
'photo' => 'mimes:jpeg,bmp,png'
سلام مجدد
@paressep28
اینم یه نمونه کد برای PHP خام ، چون شما حس میکنم MVC کار هستید و از فریم ورک ها مثل لاراول کم استفاده میکنید و پی اچ پی خام بیشتر کد میزنید
:-)
( اینو از گفتگو ها متوجه شدم)
$allowed_file_types = array('.png','.gif','.jpg');
$file_size = 2048;
$upload_dir = "../files/documents/";
$filename = $_FILES["file"]["name"];
$file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
$file_ext = substr($filename, strripos($filename, '.')); // get file name
$filesize = $_FILES["file"]["size"];
if ((in_array($file_ext,$allowed_file_types) && ($filesize < $file_size * 1000)) || empty($filename)) {
// Rename file
$newfilename = md5(time()) . $file_ext;
move_uploaded_file($_FILES["file"]["tmp_name"], $upload_dir . "/files/" . $newfilename);
خیلی ساده محدودیت حجمی هم میتونید قرار بدید
@Alimotreb
خیلی ممنونم از شما
اره خودم سرخود MVC رو شروع کردم بخاطرهمین چون چیزی بلد نبوم سئوال میپرسیدم:)
بگذریم
وقلی اگر کاربر اینطور عمل کرد چی؟
test.php.jpeg
سلام
@paressep28
توی نمونه کد من خودتون میتونید تست بگیرید خروجی رو ببینید از اولین . به بعد میگیره!
و کلا تو هر حالتی اگر جز موارد توی آرایه نباشه آپلود نمیشه!
توی لاراول اون چیزی که دوستمون راهنمایی کرد ، عملیاتی داریم تحت ولیدیشن
موارد ورودی از کاربر رو میسنجیم، حجمش ، پسوندش ، نوعش و ..... خیلی موارد دیگه!!
اگر اوکی بود که ادامه روند کد میره جلو
اگر نبود ارور رو برمیگردونیم!
@Alimotreb
درود بر شما بزرگوار!!
کامل ندیدم و اشتباه کردم.معذرت میخام ولی تو کدی که شما فرستادید بطور پیشفرض وقت کاربر خوب عکسی وارد میکنه ممکنه یه نقطه وسط اسم عکسش باشه:) و کاربر خوووب گیر میفته.
بصورت کلی میشه اینطور عمل کرد؟؟(از نظر من البته)
اسم فایل رو میگیریم و بر حسب نقطه به دو قسمت explode می کنیم و قسمت دوم explode شده رو implode می کنیم و توش جستجو می کنیم اگه چنین چیزی وجود داشت فالس برگردونه
.py .php و... یا ....
خیلی پیچیده شد:)
mime_content_type('php.gif')
ببخشید این تابع چه پارامتری باید بگیره؟ و چه چیزی رو برگشت میده؟
سلام
@paressep28
یه تست بگیرید ران کنید کد رو متوجه میشید
$file_ext = substr($filename, strripos($filename, '.')); // get file name
2 تابع درون هم صدا زده شده!
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟