Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Membina Skrip Muat Naik Imej Selamat?

Bagaimana untuk Membina Skrip Muat Naik Imej Selamat?

Linda Hamilton
Lepaskan: 2024-12-05 12:03:10
asal
802 orang telah melayarinya

How to Build a Secure Image Upload Script?

Skrip Muat Naik Imej Selamat Penuh

Walaupun terdapat langkah meluas yang dibincangkan dalam soalan, skrip keselamatan muat naik imej yang komprehensif harus menangani aspek tambahan berikut :

Pihak Pelanggan Pengesahan:

  • Gunakan atribut HTML5 input type="file" untuk menapis jenis fail yang tidak disokong.

Penamaan Semula Fail:

  • Namakan semula fail yang dimuat naik dengan nama yang unik dan rawak untuk menghalang nama fail tekaan.
  • Alih keluar sebarang maklumat sensitif daripada nama fail (cth., sambungan).

Pengesahan Sambungan Fail:

  • Buat senarai putih sambungan fail yang dibenarkan dan sahkan sambungan fail yang dimuat naik terhadapnya ia.
  • Semak sambungan fail berganda (cth., "image.jpg.exe").

Analisis Imej:

  • Gunakan teknik analisis imej untuk mengenal pasti sama ada fail yang dimuat naik adalah imej yang sah dan bukan fail berniat jahat yang menyamar sebagai imej.

Storan Fail:

  • Simpan imej yang dimuat naik di lokasi selamat di luar direktori akar tapak web.
  • Gunakan sistem fail yang menyokong senarai kawalan akses (ACL) untuk menyekat akses kepada yang dibenarkan pengguna.

Penyepaduan Pangkalan Data:

  • Buat jadual pangkalan data untuk menjejaki imej yang dimuat naik, termasuk nama asalnya, nama baharu, jenis MIME dan tarikh muat naik.
  • Gunakan pangkalan data untuk mendapatkan dan memaparkan imej kepada yang dibenarkan pengguna.

Contoh Skrip:

Berikut ialah skrip PHP yang disemak semula yang menggabungkan langkah keselamatan di atas:

<?php

if (!empty($_FILES['image'])) {
  // Validate file extension
  if (!in_array($_FILES['image']['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
    echo 'Invalid file type';
    exit;
  }

  // Validate file size
  if ($_FILES['image']['size'] > 1 * 1024 * 1024) { // 1MB
    echo 'File too large';
    exit;
  }

  // Generate random filename
  $filename = uniqid() . '.' . pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

  // Rename and move file
  if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/' . $filename)) {
    // Insert into database
    $sql = "INSERT INTO images (name, original_name, mime_type, upload_date) VALUES (:name, :original_name, :mime_type, :upload_date)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([
      ':name' => $filename,
      ':original_name' => $_FILES['image']['name'],
      ':mime_type' => $_FILES['image']['type'],
      ':upload_date' => date('Y-m-d H:i:s')
    ]);

    echo 'Image uploaded successfully';
  } else {
    echo 'Error uploading image';
  }
}
?>
Salin selepas log masuk

Skrip ini mengesahkan sambungan fail, saiz dan jenis MIME, menamakan semula fail, menyimpannya dengan selamat dan menambah rekod pada pangkalan data.

Syor Tambahan:

  • Gunakan tembok api aplikasi web (WAF) untuk menyekat permintaan dan serangan berniat jahat.
  • Pantau muat naik direktori untuk aktiviti yang mencurigakan.
  • Kemas kini versi PHP dan perpustakaan keselamatan secara kerap untuk menangani kelemahan.

Atas ialah kandungan terperinci Bagaimana untuk Membina Skrip Muat Naik Imej Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan