Guide développeur

Fichier de test avec la bonne extension mais un contenu invalide : comment ça casse un mauvais validateur

Un validateur d'upload qui ne vérifie que l'extension ou la signature binaire d'un fichier, sans jamais décoder son contenu, laisse toujours passer un fichier qui porte les bons octets sans être réellement valide.

La validation d’un fichier uploadé peut s’arrêter à plusieurs niveaux, et chaque niveau laisse passer une catégorie de fichiers invalides différente. Un fichier de test conçu pour avoir la bonne extension et la bonne signature binaire, mais un contenu par ailleurs arbitraire, permet de vérifier précisément où s’arrête la validation d’un système donné.

Un validateur qui ne contrôle que l’extension du fichier envoyé (.png, .pdf) accepte n’importe quel contenu tant que le nom du fichier se termine correctement — un fichier de test généré avec n’importe quel contenu et la bonne extension suffit à le démontrer. Un validateur qui contrôle en plus la signature binaire (les premiers octets du fichier) est déjà plus robuste : il rejette un contenu qui ne commence pas par les octets attendus. Mais un fichier de test qui porte la signature binaire correcte du format ciblé, suivie d’un contenu arbitraire sans rapport avec la structure réelle du format, passe quand même cette deuxième vérification — parce que la signature binaire ne garantit que le début du fichier, pas sa structure complète.

Un validateur qui décode réellement le fichier — qui ouvre l’image avec une bibliothèque de traitement d’image, qui parse le PDF avec un analyseur de structure, qui vérifie la présence des sections internes attendues d’un format conteneur — est le seul niveau qui échoue systématiquement face à ce type de fichier de test : le contenu après la signature ne correspond à aucune structure interne valide, et le décodage renvoie une erreur. C’est la différence pratique entre valider un format et valider son apparence.

Ce test révèle un risque de sécurité concret plutôt que purement théorique : un système qui n’atteint jamais le niveau de décodage complet peut stocker, indexer ou transmettre en aval un fichier qui prétend être une image ou un document sans réellement l’être — un problème en soi si le traitement en aval suppose un contenu valide, et une porte ouverte à des comportements inattendus si ce traitement en aval interprète le contenu d’une façon que le format d’origine n’anticipait pas.

En pratique, faire passer ce type de fichier de test dans un système et observer à quel niveau il est rejeté — jamais, à l’extension, à la signature, ou seulement au décodage complet — indique directement la profondeur réelle de sa validation d’upload, sans avoir à lire son code source.

Générer un fichier de test à la signature choisie →

Formats concernés

Voir aussi

Sources

Dernière mise à jour :