8791 sujets

Développement web côté serveur, CMS

Bonjour, j'ai besoin pour mon projet de mettre en place un système d'upload de fichier, c'est tout simple, des images limitées à 160Ko.
Tout fonctionne nickel :
- verif extension
- verif en-tete MIME
- verif taille avec filesize()
etc...
sauf quand j'essaie de tester ce fichier, je veux savoir si il contient des codes donc je stocke son contenu avec file_get_contents() et je le fait passer par un preg_match() qui voici :
preg_match('`[\<\>#\\\'\"\?]|php|\\\`',$chaine)

et là que j'essaie avec une fausse image (faux en-tete suivi de caractères souvent utilisés en php) ou une vraie image PNG, la condition est remplie.

Donc j'aurais aimé savoir si déjà ma méthode est la bonne (manifestement non Smiley langue ) et surtout si c'est possible de parser le contenu d'une image avec file_get_contents() car à mon avis je pense que le problème vient du fait que PHP attribue automatiquement des caractètes pour interpréter le contenu de l'image (contredisez-moi si je me trompe).
Et, serait-ce faisable en ouvrant l'image en mode binaire... j'ai des doutes, qu'un esprit sage m'éclaire svp Smiley lol
merci d'avance ^^
Bonjour,

En effet ce n'est pas la bonne méthode.
Imagine que quelqu'un mette un script qui ne soit pas du php...
Et bien là c'est raté.

De plus si c'est du php tu n'as pas à t'inquiéter, avec une extension .jpg apache n'interprète pas le fichier comme si il pouvait y avoir du php (par défaut, ceci est modifiable).

Donc en réalité ce test est inutile.
Bah, ce test n'est pas un test dit de "sécurité" mais plutôt pour savoir si l'utilisateur essaie de tester le script... et donc le ban à la première tentative, et avant de mettre plusieurs tests il faudrait déjà que celui en PHP soit détecté. Hors, ce n'est pas le cas.
En tout cas merci pour les détails Smiley langue
Et si possible épargnez-moi les réponses du genre "Si tu t'attardes sur ce genre de code c'est que fiabilité que tu accordes à la sécurité et la conception de tes scripts est pas au rendez-vous" je comprends bien ce point de vue, cependant je suis pas de ceux qui cautionnent les attaques des noobs sous prétexte que je fais confiance aux techniques de conception/technologies utilisées, ou même que je fais confiance à mes connaissances.
Mais plutôt de ceux-ci... "as tiens tu veux uploader un shell, c'est fun... tu vas aller te réinscrire et reconfirmer avec une nouvelle adresse email, ça aussi c'est fun" xD