protections de fichiers derriere allopass

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par seabird, 26 Mars 2007.

  1. seabird
    seabird WRInaute occasionnel
    Inscrit:
    1 Décembre 2003
    Messages:
    318
    J'aime reçus:
    0
    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.

    Code:
    <?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&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

    Code:
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?mon-domaine\.fr/.*$ [NC]
    RewriteRule \.(mp3|rar|zip)$ http://mon-domaine.fr/interdit.php [NC,R,L]
    tout avait l'air de fonctionner , j'ai par exemple essayé de recuperer le fichier avec intellitamper qui a scanné le site, il a bien été refusé. 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.

    Quelqu'un a une idée, pour securisé correctement les fichiers ?

    Merci
     
  2. opale-cia
    opale-cia WRInaute occasionnel
    Inscrit:
    27 Juillet 2005
    Messages:
    307
    J'aime reçus:
    0
    Code:
     $FICHIER_LOCAL = "mes_fichiers/monfichier.zip"; 
    Tu peux eventuellement renommer dynamiquement toutes les 10 minutes le dossier "mes_fichiers".

    Le referer etant trop simple à spoofer pour acceder à un fichier protégé.
     
  3. Ytz
    Ytz WRInaute discret
    Inscrit:
    21 Mars 2007
    Messages:
    65
    J'aime reçus:
    0
    Hi,

    Si tu ne veux pas changer le nom des dossiers (ou des fichiers) pour diverses raisons, je ne vois que le cryptage de tes fichiers (sont-ils gros ? quelques megas ?).
    Le script décrypte le fichier coté serveur, créé un fichier temporaire dont le nom aléatoire est fourni à l'internaute à qui tu envoie le lien
    Le fichier tmp est ensuite détruit. (au bout de combien de temps.... !?)

    Ytz.
     
  4. seabird
    seabird WRInaute occasionnel
    Inscrit:
    1 Décembre 2003
    Messages:
    318
    J'aime reçus:
    0
    Non les fichiers ne sont pas tres gros , ce sont des mp3 de 5 mo en moyenne et en plus il n'y en a qu'une dizaine.
    Cela ne me gène pas de renommer éventuellement le répertoire tous les 5 min par exemple, mais je ne vois pas trop comment faire et le mettre en oeuvre . J'imagine que c'est avec une tache Cron. Je n'ai jamais utilisé cette procédure. Si une âme charitable pouvait me guider, je lui en serait très reconnaissant. :wink:

    Merci encore.
     
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    le plus pratique reste quand même de faire appel à un script intermédiaire qui va charger le contenu du fichier et le renvoyer, si les conditions sont réunies, avec les bons headers (type fichier, ...)
     
  6. seabird
    seabird WRInaute occasionnel
    Inscrit:
    1 Décembre 2003
    Messages:
    318
    J'aime reçus:
    0
    J'ai apparamment trouvé une solution qui m'a été suggérée.
    Je la poste cela servira peut -être:
    En fait dans le répertoire contenant les morceaux, j'ai rajouté un htaccess contenant "deny from all" . Visiblement maintenant cela fonctionne. Free download manager n'arrive plus a telecharger le fichier , si je rentre le lien direct.
     
  7. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    sauf que plus personne n'arrivera à télécharger :cry:
     
  8. seabird
    seabird WRInaute occasionnel
    Inscrit:
    1 Décembre 2003
    Messages:
    318
    J'aime reçus:
    0
    si si ca marche , je viens d'essayer en rentrant un code valide dans le formulaire allopass. Le script allopass passe à travers sans problème.
     
  9. UrseneLapin
    UrseneLapin Nouveau WRInaute
    Inscrit:
    26 Avril 2009
    Messages:
    1
    J'aime reçus:
    0
    seabird > T'es sur que ça marche? Parce que normalement un "deny from all", bah ça deny à tout le monde, y compris au php :?

    Moi j'ai opter pour une solution toute faite : LogDownAP (http://logdown.free.fr)

    C'est moins prise de tête et assez malin!

    Mais ça n'engage que moi...
     
  10. seabird
    seabird WRInaute occasionnel
    Inscrit:
    1 Décembre 2003
    Messages:
    318
    J'aime reçus:
    0
    Bien sur que cela marche php passe à travers deny from all.
    par exemple tu crées un répertoire fichiers dans lequel tu mets tes fichiers protégés et qui contient ton htaccess avec ton deny from all.
    A l'extérieur du répertoire tu mets ton script de téléchargement par exemple telechargement.php qui sera appelé et qui a la forme suivante:
    Code:
    $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 = "fichiers/fichier.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 = "autre_nom.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&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;
     }
    
    Tu rajoutes ta variable recall dans l'iframe de paiement qui ressemble à ça en gros:
    Code:
    http://payment.allopass.com/acte/scripts/iframe/right.apu?ids=164486&idd=451920&lang=fr&recall=1
    Voila tout marche sans problème.
     
  11. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    en fait, le deny ne fonctionne que pour un appel http. Quand c'est le serveur qui appelle directement le fichier (sous forme 'include), ce n'est pas apache qui traite les droits d'accès, mais linux (ou wxindows le cas échéant)
     
Chargement...
Similar Threads - protections fichiers allopass Forum Date
Banque images et protections possibles Droit du web (juridique, fiscalité...) 26 Avril 2011
Comment ajouter le tag GA4 sur 7000 fichiers ? Google Analytics 10 Avril 2022
fichiers PDF non adaptés aux mobiles Débuter en référencement 17 Novembre 2021
Astuce Solution de Stockage de Fichiers sur mon Domaine Développement d'un site Web ou d'une appli mobile 15 Octobre 2021
Référencement - nom des fichiers images Débuter en référencement 22 Septembre 2021
problème lors de l indexation de mes fichiers Crawl et indexation Google, sitemaps 15 Août 2021
problème avec l indexation de mes fichiers Problèmes de référencement spécifiques à vos sites 8 Août 2021
Meilleure solution pour les noms de fichiers HTML Débuter en référencement 6 Novembre 2020
Erreur d'indexation Google pour mes fichiers PDF Crawl et indexation Google, sitemaps 17 Septembre 2020
Script de partage/vente de fichiers Développement d'un site Web ou d'une appli mobile 17 Juillet 2020
Google Image, url des fichiers et traduction YouTube, Google Images et Google Maps 4 Juin 2020
Interdire téléchargement fichiers Demandes d'avis et de conseils sur vos sites 18 Juillet 2019
Envoi de fichiers volumineux par email (plusieurs Go) Le café de WebRankInfo 19 Juin 2019
Search Console Passage de HTTP à HTTPS (Fichiers ROBOTS.TXT et SITEMAP) 0 Crawl et indexation Google, sitemaps 16 Mai 2019
WordPress Désindexation des fichiers "attachements" dans Google ? Référencement Google 2 Novembre 2018
WordPress Comment modifier l'identité du site dans les fichiers ? Problèmes de référencement spécifiques à vos sites 23 Septembre 2018
Suppression d'URLs de fichiers : gros pb Crawl et indexation Google, sitemaps 27 Juillet 2018
Désindexation massive de fichiers PDF Crawl et indexation Google, sitemaps 12 Avril 2018
fichiers connect et autres Crawl et indexation Google, sitemaps 11 Avril 2018
Faut-il activer les fichiers media dans le sitemap (Yoast) ? Crawl et indexation Google, sitemaps 18 Octobre 2017