Protections de fichiers derriere allopass

Résolu
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007 - 26 mars 2007 à 19:29
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007 - 27 mars 2007 à 00:41
Bonjour,

Je suis actuellement en train de faire le site d'un groupe de musique sur lequel les morceaux seront vendus derriere allopass.
j'utilise donc le script php fournit par allopass pour le telechargement d'un fichier.

<?php 
$RECALL=$HTTP_GET_VARS["RECALL"]; 
if (trim($RECALL)=="") 
{ 
  // La variable RECALL est vide, renvoi de l'internaute 
  //vers une page d'erreur 
  header("Location: erreur.html"); 
  exit; 
} 

// $RECALL contient le code d'accès 
$RECALL = urlencode($RECALL); 

// $AUTH doit contenir l'identifiant de VOTRE document 
$AUTH = urlencode("54/75/456"); 
  
// $FICHIER_LOCAL doit contenir le chemin et le nom du fichier 
//à téléchargé présent sur votre site 
$FICHIER_LOCAL = "mes_fichiers/monfichier.zip"; 

// $FICHIER_INTERNAUTE doit contenir le nom du fichier qui sera créé sur 
//l'ordinateur de l'internaute 
// Ce nom ne doit pas être forcément le même que le nom du fichier local ! 
$FICHIER_INTERNAUTE = "lefichier.zip"; 

// envoi de la requête vers le serveur AlloPAss 
// afin de vérifier le code d'accès de l'internaute. 
// Dans la variable $r[0] on aura la réponse du serveur 
$r=@file("http://www.allopass.com/check/vf.php4?CODE=$RECALL&amp;AUTH=$AUTH"); 

// on test la réponse du serveur 
if (ereg("ERR",$r[0]) || ereg("NOK",$r[0])) 
{ 
  // Le serveur a répondu ERR ou NOK : l'accès est donc refusé 
  header("Location: erreur.html"); 
  exit; 
} 

// Le code est valide : on lance le téléchargement du fichier 
if (file_exists($FICHIER_LOCAL)==true) 
{ 
  if (strstr($HTTP_USER_AGENT,"MSIE")) 
   $attachment=""; 
  else 
   $attachment=" attachment;"; 

  header( "Content-type: application/octet-stream" ); 
  header( "Content-Disposition:$attachment filename=$FICHIER_INTERNAUTE"); 
  header( "Content-Description: File Transfert" ); 
  header( "Content-Length: ".filesize($FICHIER_LOCAL).""); 
  readfile($FICHIER_LOCAL); 
  exit; 
} 
?> 


en ayant pris soit de mettre la variable RECALL=1 dans le formulaire d'entrée du code allopass.

J'ai également mis un htaccess pour empécher les liens direct de la forme

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mon-domaine\.fr/.*$ [NC] 
RewriteRule \.(mp3|rar|zip)$ http://mon-domaine.fr/interdit.php [NC,R,L] 



Je croyais que tout fonctionnait , j'ai par exemple essayé de recuperer le fichier avec intellitamper qui a scanné le site, il a bien été refusé au moment ou j'ai cliqué dessus. Mais je viens de m'apercevoir que je réussissais a telecharger le fichier en tapant le lien directement dans Free download manager .

Je ne sais pas trop comment palier à cela.

De votre côté comment faites vous pour protéger correctement vos fichiers ?

Merci

3 réponses

cs_Dawelle Messages postés 15 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 17 avril 2008 1
26 mars 2007 à 21:32
Salut,


Pour que la protection soit effective, il faut que les fichiers soient interdits d'accès s'ils ne passent pas par le script PHP.


Dans le script ci-dessus, les fichiers à protéger sont dans le répertoire "mes_fichiers" ($FICHIER_LOCAL, ligne 19).


Essaie de mettre un fichier ".htaccess" contenant simplement "deny from all" dans le répertoire "mes_fichiers".


Ensuite, l'accès à ce répertoire sera refusé pour n'importe quelle
requête effectuée depuis l'extérieur (en l'occurence, le htaccess que
tu as cité ci-dessus pour empêcher les liens externes n'est pas
impératif).


Je crois que ça répond à ta question mais dis-le moi si ce n'est pas le cas.

Dawelle
3
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007
26 mars 2007 à 23:17
Merci pour ta suggestion.
Je viens donc d'essayer en mettant "deny from all" dans un htaccess dans le repertoire "mes_fichiers" . Mais ça coince,  maintenant le script allopass ne passe plus du tout quand je rentre un code valide pour télécharger le fichier, j'ai une erreur 403 acces refusé.

Je cherche également de mon coté, mais j'ai rien de probant pour l'instant.
 
0
cs_seabird Messages postés 27 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 27 mars 2007
27 mars 2007 à 00:41
A autant pour moi , je viens de m'apercevoir que j'avais mis mon script dans le repertoire "mes_fichiers" . forcément , il ne pouvait pas y accéder .
J'ai donc corrigé , c'est bon apparemment ca marche.

Merci , encore.
0
Rejoignez-nous