Interdire l'upload d'un fichier php

xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022 - 3 déc. 2009 à 13:52
kohntark Messages postés 3705 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

8 réponses

manu7930 Messages postés 191 Date d'inscription mercredi 7 octobre 2009 Statut Membre Dernière intervention 14 décembre 2009
3 déc. 2009 à 16:01
// 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
0
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022
3 déc. 2009 à 19:28
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
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
3 déc. 2009 à 19:48
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.
0
xzonz Messages postés 103 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 23 novembre 2022
4 déc. 2009 à 10:43
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
5 déc. 2009 à 11:10
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 :)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 déc. 2009 à 12:50
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 -
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
5 déc. 2009 à 14:24
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.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 déc. 2009 à 15:33
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 -
0
Rejoignez-nous