Page 1 sur 1
Vérifier si existence code PHP dans fichier
Posté : 14 avr. 2011, 21:47
par bobi
Bonsoir,
J'utilise un code PHP qui permet de faire un upload de fichiers (gif, png, txt, xls, pdf...)
Une personne mal intentionnée peut mettre un code PHP dans un fichier qui s'appelle par exemple "fichier.php.pdf". L'upload marche sauf que le code se trouvant dans ce fichier est bien exécuté...
Comment puis-je faire pour détourner ces tentatives de hacks ?
Merci pour votre aide
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 00:46
par devlop78
Quand tu appelles fichier.php.pdf, le code php du fichier est exécuté ???
Vérifie bien ça, et si c'est le cas, c'est un problème de configuration serveur.
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 00:47
par moogli
salut,
vérifie le type mime afin d'éviter ce genre de chose (il ne faut pas que tu dl de fichier texte

).
ton fichier ne peut être exécuté, le serveur ne va (ne doit)pas associer pdf a php, par contre en cas d'include la ça peut poser problème
après il est possible de "falsifier" le type mime, tu peut aussi utiliser
getimagesize histoire d'aider la chose, mais c'est surement falsifiable aussi
après il y a surement d'autre possibilité, tu peut ouvrir le fichier et voir s'il y a des <?php dedans histoire d'être certain que s'il y a du code il ne sera pas exécuter.
après j'ai plus d'idée
edit : develop78 : normalement c'est pas possible, mais j'ai pu tester que si tu appel le fichier cela peut être possible (par exemple une utilisation foireuse de pseudo frame

).
@+
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 09:34
par bobi
Bonjour,
Merci pour vos réponses.
J'ai hélas testé la chose et...j'ai réussi. J'ai mis dans mon fichier "test.php.pdf" avec à l'intérieur un simple echo.
Lorsque j'upload ce fichier, j'ai le texte de l'echo qui s'affiche une fois l'upload effectué.
moogli, j'ai essayé la solution d'ouvrir le fichier avec :
$contenu = fread(fopen($_FILES['files_name']['tmp_name'], "r"), filesize($_FILES['files_name']['tmp_name']));
$findme = '<?php';
$pos = strpos($contenu, $findme);
if($pos !== false) {
$erreur = 1;
}
Sauf que ça bloque bien lorsqu'il trouve la chaîne, mais en cas de fichier normal l'upload ne marche plus

Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 10:22
par popy
J'ai hélas testé la chose et...j'ai réussi. J'ai mis dans mon fichier "test.php.pdf" avec à l'intérieur un simple echo.
Ca veut dire que tu fait un include de ce fichier. Réceptionner un fichier PHP ne le fait pas s'exécuter.
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 10:27
par bobi
Tu veux dire que l'upload réagit comme une action d'include ?
Lors de l'upload, le code PHP se trouvant à l'intérieur du faux PDF a bien été interprété. Donc on peut y mettre n'importe quel code pour récupérer ce qu'on veut.
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 13:06
par popy
Oui, mais si le code présent dans le fichier s'exécupe, c'est que ton code l'exécute, c'est pas le comportement normal de php.
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 13:57
par Spols
Quelle est le code qui propose ce fichier en téléchargement ? un simple lien ou un bout de code php (dans ce cas montre le nous)
Re: Vérifier si existence code PHP dans fichier
Posté : 15 avr. 2011, 14:27
par bobi
Il s'agit d'un code d'upload. Je me suis basé sur le code d'un tuto d'ici.
http://www.phpfrance.com/tutoriaux/inde ... e-fichiers
Re: Vérifier si existence code PHP dans fichier
Posté : 18 avr. 2011, 08:57
par bobi
Personne ne peut m'aider ?
Merci