موضوعات پیشرفته
·
۹ دقیقه مطالعه
آپلود فایل (امن)
آپلود فایل یکی از خطرناکترین بخشهاست؛ با دقت انجامش بده.
فرم آپلود
<form method="POST" enctype="multipart/form-data">
<input type="file" name="avatar">
<button>آپلود</button>
</form>
enctype="multipart/form-data"برای آپلود الزامی است.
پردازش
<?php
$file = $_FILES['avatar'];
// ۱) بررسی خطا
if ($file['error'] !== UPLOAD_ERR_OK) { exit("خطا در آپلود"); }
// ۲) بررسی حجم
if ($file['size'] > 2_000_000) { exit("حجم زیاد"); }
// ۳) بررسی نوع واقعی (نه پسوند!)
$allowed = ['image/jpeg', 'image/png'];
$mime = mime_content_type($file['tmp_name']);
if (!in_array($mime, $allowed)) { exit("نوع مجاز نیست"); }
// ۴) نام امن و تصادفی
$name = bin2hex(random_bytes(8)) . '.jpg';
move_uploaded_file($file['tmp_name'], "uploads/$name");
⚠️ قوانین امنیتی حیاتی
- نوع فایل را با محتوای واقعی چک کن (
mime_content_type)، نه پسوند. - نام فایل را خودت بساز (تصادفی)، نه نام کاربر.
- پوشهٔ آپلود را خارج از دسترس اجرا بگذار (فایلها اجرا نشوند).
- حجم را محدود کن.
آپلودِ ناامن، راه نفوذ شمارهٔ یک به سرور است. این درس را جدی بگیر.