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

  FORUM HardWare.fr
  Programmation
  PHP

  [newbie] Empecher le "vol" de bande passante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[newbie] Empecher le "vol" de bande passante

n°1321520
Reekho
TBTH old timer
Posté le 09-03-2006 à 03:39:03  profilanswer
 

Bonjour à tous,
 
Je viens de mettre en place sur mon site un gestionnaire de téléchargement en php qui permet de télécharger des documentations.
 
Il y a un controle d'accès permettant aux seuls membres de mon site de télécharger les fichiers mais il est possible de les linker et donc que quelqu'un propose un de ces fichiers au téléchargement sur un autre site.
 
Comment faire pour qu'il soit impossible de télécharger ces fichiers d'un autre endroit que mon propre site ?
 
A noter: Les liens vers ces fichiers sont sous la forme: http://www.mondomain.com/fichierenquestion.xxx
 
Merci pour votre aide !

mood
Publicité
Posté le 09-03-2006 à 03:39:03  profilanswer
 

n°1321562
Dj YeLL
$question = $to_be || !$to_be;
Posté le 09-03-2006 à 09:34:21  profilanswer
 

avec un .htaccess je pense


---------------
Gamertag: CoteBlack YeLL
n°1321594
chaced
Posté le 09-03-2006 à 10:02:42  profilanswer
 

faire un .php que l'on telecharge (il telechargera le bon nom de fichier grace aux entetes) et que ce php flushe a la volée le fichier pdf en question.


---------------
CPU-Z | Timespy | Mes bd
n°1321596
fluminis
Posté le 09-03-2006 à 10:05:03  profilanswer
 

une possibilité :
un fichier dl.php
et tous tes téléchargements se font grace à ce fichier
 

Code :
  1. <?
  2. include('motdepasse.php'); //defini mon tableau $CONF
  3. if(!empty($_GET['f'])){
  4.     //TODO: rajouter tes tests ici
  5.     //pour voir si ton user à une session ouverte
  6.     //et qu'il est logué
  7. $file = $CONF['upload_path'].$_GET['f'];
  8. $size = filesize ($file);
  9. $saveName = basename ($file);
  10. header ('Expires: 0');
  11. header ('Last-Modified: ' .
  12. gmdate ('D, d M Y H:i:s', filemtime ($file)) . ' GMT');
  13. header ('Pragma: public');
  14. header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  15. header ('Accept-Ranges: bytes');
  16. header ('Content-Length: ' . $size);
  17. header ('Content-Type: Application/octet-stream');
  18. header ('Content-Disposition: attachment; filename="' . $saveName . '"');
  19. header ('Connection: close');
  20. readfile ($file);
  21. }else{
  22. print('file missing');
  23. }
  24. ?>


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1321599
chaced
Posté le 09-03-2006 à 10:10:09  profilanswer
 

au passage readfile est limité a 2Mo.


---------------
CPU-Z | Timespy | Mes bd
n°1321601
skeye
Posté le 09-03-2006 à 10:13:18  profilanswer
 

...et au lieu d'un print('file missing') envoyer un 404 serait de bon aloy.[:aloy]


---------------
Can't buy what I want because it's free -
n°1321859
fabs2b
Posté le 09-03-2006 à 14:48:20  profilanswer
 

chaced a écrit :

au passage readfile est limité a 2Mo.


 
au passage,comment remedier a cette limite ?
merci

n°1321885
chaced
Posté le 09-03-2006 à 15:05:39  profilanswer
 

fabs2b a écrit :

au passage,comment remedier a cette limite ?
merci


 
avec fopen et fread (en lisant par bloc le fread, pas tout d'un coup)


function readfile_chunked($filename,$retbytes=true)
  {
   $chunksize = 1024*1024; // how many bytes per chunk
   $buffer = '';
   $cnt =0;
   // $handle = fopen($filename, 'rb');
   $handle = fopen($filename, 'rb');
   if ($handle === false)
   {
     return false;
   }
   while (!feof($handle))
   {
     $buffer = fread($handle, $chunksize);
     echo $buffer;
     flush();
     if ($retbytes)
     {
       $cnt += strlen($buffer);
     }
   }
   $status = fclose($handle);
   if ($retbytes && $status)
   {
     return $cnt; // return num. bytes delivered like readfile() does.
   }
   return $status;
  }


Message édité par chaced le 09-03-2006 à 15:07:42

---------------
CPU-Z | Timespy | Mes bd
n°1321889
0x90
Posté le 09-03-2006 à 15:07:30  profilanswer
 

faire passer un fichier de plusieurs méga à travers une fct php, c'est vraiment une bonne idée ? :s


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1321892
chaced
Posté le 09-03-2006 à 15:09:50  profilanswer
 

0x90 a écrit :

faire passer un fichier de plusieurs méga à travers une fct php, c'est vraiment une bonne idée ? :s


 
Non pas vraiement, mais une thread apache sera utilisée durant le telechargement, mais c'est aussi le cas avec un telechargement classique non ftp.
 


---------------
CPU-Z | Timespy | Mes bd
mood
Publicité
Posté le 09-03-2006 à 15:09:50  profilanswer
 

n°1322013
benamoubea​ch
tivuplai
Posté le 09-03-2006 à 17:03:40  profilanswer
 

tu peux peut-etre vérifier le referer , et voir si c bien le meme domaine.

n°1322023
Djebel1
Nul professionnel
Posté le 09-03-2006 à 17:19:26  profilanswer
 

benamoubeach a écrit :

tu peux peut-etre vérifier le referer , et voir si c bien le meme domaine.


ce qui reste bidouillable

n°1322039
dwogsi
Défaillance cérébrale...
Posté le 09-03-2006 à 17:39:38  profilanswer
 

et ca reste incertain..

n°1322048
benamoubea​ch
tivuplai
Posté le 09-03-2006 à 17:49:49  profilanswer
 

j'ai pas dis que c'était propre et parfait :D

n°1322053
dwogsi
Défaillance cérébrale...
Posté le 09-03-2006 à 17:58:30  profilanswer
 

Ba heureusement!  
Parce que tu fais quoi s'il est vide???

n°1322061
Djebel1
Nul professionnel
Posté le 09-03-2006 à 18:17:01  profilanswer
 

et si l'utilisateur le modifie pour te faire croire que ça vient bien de ton domaine

n°1322085
masklinn
í dag viðrar vel til loftárása
Posté le 09-03-2006 à 19:00:01  profilanswer
 

S'il est vide c'est comme s'il était incorrect, et si l'utilisateur le modifie... t'as déjà résolu 95% des problèmes d'hotlinking à minima donc tu t'en fous [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1322104
sub1
Posté le 09-03-2006 à 19:23:37  profilanswer
 

chaced a écrit :

au passage readfile est limité a 2Mo.


 
 
Hello,
 
je n'ai rien vu dans la doc php concernant cette limite.... Ce ne serai pas une limitation de ton hébergeur?? Meme si ca parait absurbe que ca passe avec le couple fopen/fread....

n°1322114
Djebel1
Nul professionnel
Posté le 09-03-2006 à 19:45:37  profilanswer
 

masklinn a écrit :

S'il est vide c'est comme s'il était incorrect, et si l'utilisateur le modifie... t'as déjà résolu 95% des problèmes d'hotlinking à minima donc tu t'en fous [:spamafote]


et si c'est un naviguateur sauce maison qui bloque le referer, le mec peut pas accéder au site

Message cité 2 fois
Message édité par Djebel1 le 09-03-2006 à 19:45:57
n°1322144
chaced
Posté le 09-03-2006 à 20:20:35  profilanswer
 

sub1 a écrit :

Hello,
 
je n'ai rien vu dans la doc php concernant cette limite.... Ce ne serai pas une limitation de ton hébergeur?? Meme si ca parait absurbe que ca passe avec le couple fopen/fread....


 
C'est moi meme mon hebergeur  :whistle:


---------------
CPU-Z | Timespy | Mes bd
n°1322176
masklinn
í dag viðrar vel til loftárása
Posté le 09-03-2006 à 21:17:19  profilanswer
 

Djebel1 a écrit :

et si c'est un naviguateur sauce maison qui bloque le referer, le mec peut pas accéder au site


Ne peut pas accéder aux medias, faut être stupide pour bloquer les pages sur un referer


Message édité par masklinn le 09-03-2006 à 21:18:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1322185
smaragdus
whores, drugs & J.S. Bach
Posté le 09-03-2006 à 21:25:40  profilanswer
 

Djebel1 a écrit :

et si c'est un naviguateur sauce maison qui bloque le referer, le mec peut pas accéder au site


argument qui a autant de poids que de tenir compte de lynx pour faire un site web :lol:

n°1322189
masklinn
í dag viðrar vel til loftárása
Posté le 09-03-2006 à 21:32:09  profilanswer
 

smaragdus a écrit :

argument qui a autant de poids que de tenir compte de lynx pour faire un site web :lol:


Lynx est un vrai navigateur [:mmmfff]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1322191
smaragdus
whores, drugs & J.S. Bach
Posté le 09-03-2006 à 21:33:32  profilanswer
 

masklinn a écrit :

Lynx est un vrai navigateur [:mmmfff]


 
[:rofl] [:rofl] [:rofl]  

n°1322217
sub1
Posté le 09-03-2006 à 21:53:14  profilanswer
 

chaced a écrit :

C'est moi meme mon hebergeur  :whistle:


 
Donc après avoir testé ca :
 

Code :
  1. <?php
  2. $file = 'http://test-debit.free.fr/4096.rnd';
  3. header('Content-Type: application/force-download');
  4. header('Content-Disposition: attachment; filename="'.basename($file).'"');
  5. header("Content-Transfer-Encoding: binary" );
  6. readfile($file);
  7. ?>


 
je vois que ca vient de ton hébergeur....  ;)

n°1322428
Reekho
TBTH old timer
Posté le 10-03-2006 à 00:55:35  profilanswer
 

Merci pour vos réponses. Petite précision, certains fichiers dépassent les 60 Mo.
 
Je me dit que le plus simple serait de passer par un .htaccess. J'ai fait quelques essais mais je n'ai pas réussi a faire fonctionner le truc correctement. (Ca bloque tout ou rien).

n°1322429
Reekho
TBTH old timer
Posté le 10-03-2006 à 01:00:19  profilanswer
 

benamoubeach a écrit :

tu peux peut-etre vérifier le referer , et voir si c bien le meme domaine.


 
Alors encore une précision, mon script affiche la liste des fichiers présents dans un répertoire, avec des liens vers ces fichiers et les sous répertoires pour la navigation.
 
C'est donc ultra newb, mais ca permet d'updater en rajoutant simplement des fichiers sur le ftp... Donc si il était possible de vérifier le referrer seulement via le .htaccess, ca serait magnifique.

n°1322454
Orission
Posté le 10-03-2006 à 04:29:30  profilanswer
 

tu peux faire en sorte que si ton truc n'est pas télécharger sur ton site tu redirige


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
n°1322506
chaced
Posté le 10-03-2006 à 09:39:41  profilanswer
 

sub1 a écrit :

Donc après avoir testé ca :
 

Code :
  1. <?php
  2. $file = 'http://test-debit.free.fr/4096.rnd';
  3. header('Content-Type: application/force-download');
  4. header('Content-Disposition: attachment; filename="'.basename($file).'"');
  5. header("Content-Transfer-Encoding: binary" );
  6. readfile($file);
  7. ?>


 
je vois que ca vient de ton hébergeur....  ;)


 
Il faut etre en php > 5.0.4 pour que ça fonctionne ;)
 
http://bugs.php.net/bug.php?id=32970


Message édité par chaced le 10-03-2006 à 09:40:56

---------------
CPU-Z | Timespy | Mes bd
mood
Publicité
Posté le   profilanswer
 


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

  [newbie] Empecher le "vol" de bande passante

 

Sujets relatifs
[AIDE][Newbie]Creation d'un portail ou forum en phpEmpêcher de fermer une UserForm sous VBA (Excel)
[Newbie] Help Mise à jour site en Php[php] [resolu]newbie. Comment ramener le focus sur le 1er champ
Empêcher l'arrêt d'un batch par l'utilisateur.besoin d'aide (rapide) VBS (newbie)
Newbie dans la panade...Service Web ---> Newbie!!! urgent
HTML - Newbie - 2 questions techniques[html] Newbie - mon site - lien pour télécharger - Résolu -
Plus de sujets relatifs à : [newbie] Empecher le "vol" de bande passante


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