Je me trouvais dans une situation difficile depuis quelques jours depuis que mon hébergeur a été piraté pour POST sur des fichiers PHP. J'ai eu affaire à des fichiers d'extension .png
contenant le code PHP. Je ne peux même pas essayer d'éditer un par un pour vérifier s'il s'agit d'un fichier .png
valide ou non.
Est-il possible de vérifier en masse si un fichier avec un .png
est réel ou faux?
Je me trouvais dans une situation difficile depuis quelques jours depuis que mon hébergeur a été piraté pour POST sur des fichiers PHP. J'ai eu affaire à des fichiers d'extension .png contenant du code PHP.
C'est pourquoi la vérification des erreurs doit être implémentée dans votre script de téléchargement. Ainsi, vous pouvez tester le fichier téléchargé pour vous assurer que les données sont valides. Si les données ne sont pas valides, supprimez le fichier et affichez une page Web d'erreur.
Je ne peux même pas essayer d'éditer un par un pour vérifier si c'est un fichier .png valide ou non. Est-il possible de vérifier en masse si un fichier avec un fichier .png est réel ou faux?
Vous pouvez créer un script qui ouvre chaque fichier téléchargé et vérifier les quelques premiers octets pour vous assurer que le fichier est valide, mais cette étape est inutile dans le futur si vous décidez d'ajouter une validation de fichier à votre script de téléchargement, comme décrit ci-dessus.
En outre, comme l’a déclaré quelqu'un dans les commentaires, pour au moins une certaine protection contre l'exécution de script, définissez le répertoire de téléchargement comme un répertoire dans lequel le bit d'exécution n'est pas défini. Assurez-vous également que le dossier ne soit pas accessible au grand public afin de pouvoir valider les fichiers et de les rendre acceptables pour le public une fois que vous les aurez validés.
Est-il possible de vérifier en masse si un fichier avec un fichier .png est réel ou faux?
Non, pas vraiment.
Parce que cela a été suggéré dans une réponse et dans des commentaires: Vérifier les X premiers octets d’un fichier n’est pas un moyen approprié de déterminer s’il contient du code PHP ou non (qu’en est-il du contenu après le premier X octets?).
De plus, le code PHP peut être masqué dans des métadonnées ou des fragments IDAT, ce qui signifie que vous pouvez avoir un fichier image totalement valide, qui contient également le code PHP.
Il est extrêmement difficile de vérifier si une image contient d'autres données nuisibles ou non.
Donc ce que vous voulez faire c'est:
<?php
, <?=
et <script
(insensible à la casse). En outre, vous pouvez rechercher <?
(si les balises courtes sont autorisées) et <%
(dans le cas où les balises asp sont autorisées). Cela devrait prendre en charge le code PHP, mais pas le contenu potentiellement dangereux.De nos jours, dans la plupart des hébergements, pour des raisons de sécurité, ils ont désactivé les balises courtes "<?".
Donc, vous pouvez grep/strstr pour "<?php"
dans le fichier téléchargé. Si une correspondance est trouvée, supprimez simplement le fichier.
Nous suivons cela depuis longtemps et cela semble fonctionner très bien.