Je voudrais créer un script shell qui vérifiera que tous les fichiers d'un répertoire sont des fichiers image.
Nous avons récemment eu un problème où un pirate pouvait générer un fichier dans un répertoire et le masquer en tant que fichier .jpg. Je voudrais créer un script shell pour vérifier tous les fichiers du répertoire afin de m'assurer qu'il s'agit de vrais fichiers jpg, gif ou png.
Réponse acceptée :
Je pense que vous voulez faire très attention à l'utilisation de file
dans une circonstance où vous lui donnez une entrée totalement non fiable. Par exemple, RHEL 5 file
identifiera ceci :
GIF87a
<?php
echo "Hello from PHP!n";
?>
En tant que "Données d'image GIF, version 87a, 15370 x 28735". L'interpréteur PHP n'a aucun problème à exécuter cette entrée. Cette absence de problème est à la base des problèmes d'"inclusion de fichiers locaux" (LFI).
Deuxièmement, file
(et même des strings
) analyse en fait les fichiers d'entrée pour vous dire ce que vous voulez savoir. Ces analyseurs sont compliqués et ont des problèmes.
Je vais suggérer le identify
commande de la suite ImageMagick. Il n'est pas dupe de mon exemple simple ci-dessus, et il n'analyse correctement que les fichiers image, il devrait donc être moins sujet aux failles de sécurité que file
.