Maison >développement back-end >tutoriel php >Comment puis-je créer un script de téléchargement d'image sécurisé ?

Comment puis-je créer un script de téléchargement d'image sécurisé ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 17:39:12517parcourir

How Can I Create a Secure Image Upload Script?

Script complet de téléchargement d'images sécurisé

Introduction

Garantir des téléchargements d'images sécurisés est crucial pour protéger votre serveur et vos données. Ce script décrit une approche globale pour obtenir une sécurité maximale de téléchargement d'images.

Étape 1 : Validation du type de fichier

Formulaire HTML :

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image">
    <input type="submit" name="upload" value="Upload">
</form>

PHP :

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

Étape 2 : Validation du contenu de l'image à l'aide de GD Bibliothèque

$verifyimg = getimagesize($_FILES['image']['tmp_name']);
if ($verifyimg['mime'] != $_FILES['image']['type']) {
    echo "Invalid image content";
    exit;
}

Étape 3 : Répertoire de téléchargement restreint

Stockez les images téléchargées en dehors de la racine du document accessible ou dans un répertoire protégé :

/uploads

Étape 4 : Masquer le fichier Informations des visiteurs

Renommer et modifier l'extension des images téléchargées et stocker les informations d'origine dans un base de données :

PHP :

$uploadfile = tempnam_sfx($uploaddir, ".tmp");
if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
    // Database logic to store original name and MIME type
}

Étape 5 : Récupération sécurisée des images

PHP :

$id = 1; // For example
$sql = "SELECT name, original_name, mime_type FROM uploads WHERE>

Étape 6 : Fonctionnalités supplémentaires

Maximum Validation de la taille du fichier :

if ($_FILES['image']['size'] > 1000000) {
    echo "File size too large";
    exit;
}

Classe ImageUpload :

J'ai créé une classe ImageUpload pour simplifier le processus de téléchargement. Téléchargez le package et suivez le README pour les instructions.

Disponibilité Open Source :

La classe ImageUpload est désormais disponible sur GitHub pour les contributions et améliorations de la communauté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn