En photographie numérique, les métadonnées sont stockées à l'intérieur d'un fichier JPG et permettent de décrire un certain nombre d'informations complémentaires.
Elles sont réparties en 3 catégories (Source imatag.com) :
1 EXIF (Exchangeable image file format)
Le type EXIF contient principalement des informations techniques liées à la prise de vue.
- Marque et Modèle
- Date du cliché
- Vitesse d'obturation
- Exposition
- Ouverture du diaphragme
- Sensibilité (ISO)
- Distance focale
- Objectif
- Flash activé ou désactivé
- Source lumineuse
- Coordonnées GPS
- Copyright
2 IPTC (International Press Telecommunications Council)
Le type IPTC contient des informations enrichies manuellement par le photographe ou par des agences.
- Nom de l'auteur
- Adresse
- Numéro de téléphone
- Adresse email
- Site web
- Licence
- Pays où a été prise la photo
- Mots-clés
3 XMP (Extensible Metadata Platform)
Ce nouveau type permet de définir l'ensemble des informations précédentes et de les enrichir. Le format étant en XML, celui-ci peut être étendu simplement.
Les risques
Ces informations sont très utiles pour les photographes. Elles permettent d'enrichir les photos, améliore la traçabilité et la recherche par mots clés. Mais il est possible d'insérer dans ces données, grâce à des logiciels comme Exiftool, du code PHP qui pourra ensuite être exécuté une fois envoyé sur votre serveur.
exiftool -documentname='<?php echo "test"; ?>'
Si votre site contient le code suivant, alors le code PHP contenu dans le fichier exemple.jpg va s'exécuter :
include("exemple.jpg");
Solutions
Il est donc fortement déconseillé d'utiliser les fonctions include, require ou include_once pour intégrer une image depuis le PHP.
Il est également possible de supprimer toutes métadonnées d'une photo avec la librairie Gmagick :
$imageFilePath = 'exemple.jpg';
$i = new Gmagick();
$i->readImage($imageFilePath);
$i->setImageFormat('JPG');
$i->stripImage();
$i->profileImage('*', null);
$i->writeImage($imageFilePath);
$i->destroy();
La librairie Imagick permet également de faire la même chose :
$imageFilePath = 'exemple.jpg';
$img = new Imagick(realpath($imageFilePath));
$profiles = $img->getImageProfiles("icc", true);
$img->stripImage();
if(!empty($profiles)) {
$img->profileImage("icc", $profiles['icc']);
}
Lors de l'envoi de fichiers depuis un formulaire (photos ou tout type de fichiers), il est obligatoire de vérifier sa validité. Ne jamais faire confiance à l'utilisateur ni à son navigateur. Côté serveur, on met en place plusieurs niveaux de vérification :
- On vérifie l'extension du fichier pour qu'elle soit celle attendue. *.jpg ou *.png pour une photo, *.pdf pour un document...
- On vérifie son type mime, si le fichier est réellement au format souhaité
- On vérifie la taille du fichier
- On supprime les métadonnées dans le cas d'envoi de photos
- On envoie le fichier dans un répertoire non accessible, en dehors de la racine du site web, ou dans un répertoire ou il est interdit de lancer du php
- On renomme le fichier pour éviter de garder le nom initial
- Si possible, on lance une analyse anti-malware

Par Thibaut Pietri
Derniers articles
Vidéo en 2026 : ce qui change
4 février 2026 En 2026, la vidéo n’est plus un simple format « sympa » : c’est devenu le langage central du digital. Visibilité, notoriété, conversion, marque employeur, communication interne… tout passe par des contenus vidéo plus réguliers, plus ciblés et mieux structurés
IA et textes de site : erreurs courantes à éviter
27 janvier 2026 L’intelligence artificielle permet aujourd’hui de rédiger rapidement des textes pour un site web. Pages de présentation, services, articles de blog… tout semble plus simple et plus rapide. Mais utiliser l’IA sans méthode peut produire l’effet inverse.
Comment réagir face à des avis négatifs ?
26 janvier 2026 Un avis négatif n’est jamais agréable, mais ce n’est pas une fatalité. Bien géré, il peut au contraire renforcer votre crédibilité.