Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1696 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Comment sécuriser un download de fichier ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment sécuriser un download de fichier ?

n°1213242
fluminis
Posté le 02-10-2005 à 23:24:33  profilanswer
 

Bonjour,
 
Je tente de réaliser un compteur de téléchargement en php,
Mon probleme est desormais de sécuriser un peu tout ca !
 
Deja je fais a la fin de mon script un readfile('path/to/file'); ce qui m'a permis de mettre un .htacess Deny From All dans le repertoire où se trouve les fichiers. Ainsi les utilisateurs ne peuvent pas aller directement dans le repertoire.
 
Mais mon soucis est de nettoyer le path qui m'est envoyé pour éviter que mes utilisateurs download n'importe quel fichier sensible ?
 
Exemple :
http://monsite/dl.php?file=path/to/file
et je veux eviter les
http://monsite/dl.php?file=../../fichiersensible.php
 
Simplement vérifier la non presence des ../ est innéficasse je suppose ? Car les . ou les / peuvent s'écrire en hexadecimal ou autre...
 
Que me conseillez vous de faire ?
 
Merci d'avance


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
mood
Publicité
Posté le 02-10-2005 à 23:24:33  profilanswer
 

n°1213290
esox_ch
Posté le 03-10-2005 à 08:30:37  profilanswer
 

Que tu fasses une liste des fichiers libres en telechargement , ou alors que tu les mettes tous dans la meme directory et qu'avant le dl tu controles que ca se trouve bien laba dedans


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1213778
fluminis
Posté le 03-10-2005 à 16:43:58  profilanswer
 

tu veux dire que je stocke tous les fichiers en libre téléchargement dans une bdd et que je fasse plutot :
 
http://monsite/dl.php?id=157  
 
N'existerait il pas une methode pour "nettoyer" le path qui m'est envoyé ? (et si une telle methode existe vous auriez un exemple)
 
Merci


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1213807
omega2
Posté le 03-10-2005 à 17:21:38  profilanswer
 

Il a pas parlé d'une base de donnée.
Si tu te fais une liste des fichiers autorisés, tu peux trés bien la faire dans un simple fichier texte.
Et si, comme il te propose, tu mets tous les fichiers téléchargeable dans un seul et même répertoire, alors il te suffit de ne pas autorisé le changement de répertoire (présence d'un "/" ) et tu complétes le liens en rajoutant (dans le script php) le chemin vers le fichier. mais cette méthode empéche de classer les fichiers. :(

n°1213831
benji_100
Posté le 03-10-2005 à 17:52:45  profilanswer
 

Citation :


et je veux eviter les  
http://monsite/dl.php?file=../../fichiersensible.php  
 
Simplement vérifier la non presence des ../ est innéficasse je suppose ? Car les . ou les / peuvent s'écrire en hexadecimal ou autre...  


 
Ah ? interressant ca si je peux me permettre :)
comment est il possible de réécrire "../../fichiersensible.php" en utilisant les caractere hexa ? Qqn pourrait le traduire en hexa pour voir ?

n°1213836
fluminis
Posté le 03-10-2005 à 18:04:14  profilanswer
 

Code :
  1. <?
  2. for($i=0; $i<255; $i++){
  3. print($i.": &#".$i.";\n<br/>" );
  4. }
  5. ?>

&#46; semble etre le .
&#47; semble etre le /
 
et print(rawurlencode('../')); affiche ..%2F
 
Il doit surement y avoir d'autres moyens de camoufler les ../ pour qu'une simple expression reguliere soit ineficasse.
 
Est ce que quelqu'un a deja rencontré ce probleme et a trouvé une solution / une parade ?


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1213840
benji_100
Posté le 03-10-2005 à 18:10:25  profilanswer
 

Perso je check les extensions des fichiers téléchargés. Tu peux pas faire la même chose? Me dis pas que tu propose des fichiers PHP au téléchargement? :)

n°1213843
fluminis
Posté le 03-10-2005 à 18:13:18  profilanswer
 

c'est bien là le probleme :)
j'ai bien un fichier de config ou l'utilisateur peut definir la liste des extensions authorisées mais... si pas malheur il authorise les fichiers php il encoure de gros risque ! et comme c'est destiné à des programmeurs ils sont succeptibles de s'echanger des codes sources entre eux donc des .php ... :s


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1213862
fluminis
Posté le 03-10-2005 à 18:39:27  profilanswer
 

Tient je viens de trouver quelquechose d'interessant :
 
http://fr.php.net/manual/fr/function.realpath.php
 

Code :
  1. function down_home($abs_dir) {   // dir deeper than home?
  2. $real_home = @realpath($GLOBALS["home_dir"]);
  3. $real_dir = @realpath($abs_dir);
  4. if($real_home===false || $real_dir===false) {
  5.  if(@eregi("\\.\\.",$abs_dir)) return false;
  6. } else if(strcmp($real_home,@substr($real_dir,0,strlen($real_home)))) {
  7.  return false;
  8. }
  9. return true;
  10. }


 
il doit y avoir moyen de faire quelquechose avec ça


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1213888
benji_100
Posté le 03-10-2005 à 19:22:26  profilanswer
 

Ca a l air pas mal :) mais c est trop hard pour moi :) . Comprend pas les "@"...
Mais bon courage.

mood
Publicité
Posté le 03-10-2005 à 19:22:26  profilanswer
 

n°1213905
omega2
Posté le 03-10-2005 à 20:23:28  profilanswer
 

@ = si message d'erreur ne pas afficher le message d'erreur et si message d'alerte, ne pas afficher l'alerte.

n°1214021
benji_100
Posté le 03-10-2005 à 23:39:46  profilanswer
 

connaissance++;
Merci omega2 ^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment sécuriser un download de fichier ?

 

Sujets relatifs
transcoder un fichier xml en utf-8connaitre l'url du fichier html contenant le swf
Excel VBA - Importer depuis un fichier textecomment transformer un fichier xml en un tableau
regénérer fichier resxSyntaxe pour appeller un fichier
Triturage de fichier en PERLremplacer une chaine de caractere dans un fichier en .bat
VB Excel - Renommer fichier en fonction du répertoirefichier matlab?
Plus de sujets relatifs à : Comment sécuriser un download de fichier ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR