Interdire l'upload d'un fichier php

Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
- - Dernière réponse : kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
- 5 déc. 2009 à 15:33
Bonjour a toutes et tous

voila ma question

j'ai un script d'upload sur mon site web

et je voudrais savoir comment interdire
d'uploader des fichier php ou contenant du php
afin d'eviter des problèmes de sécurité.

Merci de votre aide

Franck
Afficher la suite 

8 réponses

Messages postés
191
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
14 décembre 2009
0
Merci
// Définition du fichier dont il faut récupérer l'extension

$monArchive = $tonfichier;

// Une fois extention récupéré.

if(pathinfo($monArchive, PATHINFO_EXTENSION) == "php") {
exit(header('Location: redirection'));}

*********************************************
redirection= une page de ton choix par exemple
$tonfichier: le ou les fichier en question
Commenter la réponse de manu7930
Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
ok merci
mais si un petit malin
met du php entre deux balises
html qu'il l'upload puis l'execute
la faille persiste

je pensais controller le type
mime du fichier avant de l'envoyer
mais j'ai aucune idee de la maniere
d'y parvenir
tu as peut etre une idee

merci
Commenter la réponse de xzonz
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
9
0
Merci
Salut,

mais si un petit malin
met du php entre deux balises
html qu'il l'upload puis l'execute
la faille persiste

Non. Normalement un serveur web (tel qu'apache) se fie à l'extension du fichier pour déterminer son comportement vis-à-vis d'un fichier. Par défaut un fichier .htm ou .html sera considéré comme tel et le PHP se trouvant à l'intérieur ne sera pas interprété.

je pensais controller le type
mime du fichier avant de l'envoyer
mais j'ai aucune idee de la maniere
d'y parvenir

Oui mais ça ne remplace pas la vérification de l'extension. Si tu veux l'ajouter regarde du côté de finfo_file(), en particulier l'exemple.
Commenter la réponse de TychoBrahe
Messages postés
105
Date d'inscription
mardi 13 janvier 2004
Statut
Membre
Dernière intervention
18 mai 2019
0
Merci
Salut

j'ai fait le test
et malheureusement quand je crée un fichier html bidon
et que je met du php dedans avec un unlink de ma page d'index
ou des choses du genre - que je retourne sur ma page web apres l'upload et que j'execute la page html ...

le code php est bien exécuté

pour info je suis chez freeheberg

une solution peut etre ?

Merci de votre aide

Franck
Commenter la réponse de xzonz
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
9
0
Merci
Salut,

le code php est bien exécuté

pour info je suis chez freeheberg

une solution peut etre ?

La meilleur solution serait de ne pas utiliser un mutu dont on ne maîtrise pas la conf. Sinon tu devrait t'en sortir avec un AddHandler, si bien entendu tu peux utiliser les .htaccess ou autre moyen permettant d'agir sur la conf d'apache (si le serveur est bien apache bien entendu).

Au passage concernant la vérification du type MIME :
<html>
  <head>
    <title>toto</title>
  </head>
  
    coucou

    
      <?php echo 'titi'; ?>
    


  
</html>

tycho@uraniborg-> file toto.html
toto.html: HTML document text
tycho@uraniborg-> file toto.php
toto.php: HTML document text

Ça risque fort de ne pas vraiment fonctionner :)
Commenter la réponse de TychoBrahe
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

Heu... pourquoi ne pas utiliser simplement str_replace() :
<?php
$content = str_replace('<?php','', $content);
?>

... substr_replace(), ou ... Bref, virer les balises PHP.

C'est un exemple hein, il faut peut être l'adapter à ton cas (short_open_tag, ...)


Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
9
0
Merci
Salut,

Heu... pourquoi ne pas utiliser simplement str_replace() :

Parce que ça ne fonctionne que pour le PHP ? En acceptant uniquement des extensions connues on évite tout ce qui est php mais également perl, python, ruby, etc ; ce qui est difficile à mettre en place autrement.
Commenter la réponse de TychoBrahe
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Désolé, je n'ai pas compris.
Pourquoi parles tu de Perl, etc ??
Je n'ai jamais dit qu'il ne fallait pas contrôler l'extension ou le type mime que je sache.

Je répondais à ça :
La meilleur solution serait de ne pas utiliser un mutu dont on ne maîtrise pas la conf. Sinon tu devrait t'en sortir avec un AddHandler, si bien entendu tu peux utiliser les .htaccess ou autre moyen permettant d'agir sur la conf d'apache (si le serveur est bien apache bien entendu).


Cordialement,

Kohntark -
Commenter la réponse de kohntark