首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 檔案上傳圖庫程式:最小可用原型與安全加固要點

     編輯:PHP 相關知識

最小原型 (upload.php)

 2 * 1024 * 1024) {
        die("檔案不得超過 2MB");
    }

    // 安全檔名
    $ext = pathinfo($up['name'], PATHINFO_EXTENSION);
    $name = bin2hex(random_bytes(8)) . ".$ext";
    $dest = __DIR__ . "/uploads/$name";

    if (!is_dir(dirname($dest))) mkdir(dirname($dest), 0755, true);
    if (move_uploaded_file($up['tmp_name'], $dest)) {
        echo "上傳成功:$name";
    } else {
        die("移動檔案失敗");
    }
}
?>

安全加固清單

  1. MIME 偽裝防護:使用 finfo_file(finfo_open(FILEINFO_MIME_TYPE), $tmp) 再次驗證真實類型。
  2. 禁用執行權限:上傳目錄設定 php_flag engine off (Apache) 或移除執行權限,防止上傳 PHP 惡意腳本執行。
  3. 檔名隨機化:避免覆蓋、路徑遍歷、特殊字元問題。
  4. 尺寸限制:php.ini upload_max_filesize、post_max_size 同步設定。
  5. 圖片重處理:用 GD/ImageMagick 重新壓縮儲存,剝離 EXIF、殘留腳本碼。
  6. 病毒掃描:整合 ClamAV 掃描上傳暫存檔。

進階功能擴充

  • 多檔上傳:name="images[]" 迴圈處理 $_FILES['images']。
  • 拖曳上傳:前端 drop 事件 + FormData AJAX 送出。
  • 縮圖生成:上傳後同步建立多種尺寸供列表/詳情頁使用。
  • 資料庫記錄:儲存原始檔名、儲存路徑、上傳者、時間、標籤等中繼資料。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved