Faire des URL temporaires pour contrer le leeching

Discussion dans 'URL Rewriting et .htaccess' créé par zolt, 20 Janvier 2005.

  1. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Salut,

    Sur un site de téléchargement de vidéos, je souhaiterais en limiter l’accès de telle façon qu’il soit nécessaire de passer par la page descriptive de la vidéo avant de la regarder.

    - Je veux donc interdire les accès directs du type :
    www.example.com/videos/video23.wmv

    - Le but est également d’empêcher les autres webmasters de l’afficher sur leur site comme si elle était à eux et donc de me piquer ma bande passante.

    => J’ai essayé le code suivant, mais sans rentrer dans les détails, il ne résout pas totalement le problème. Le même code marche très bien pour les images (si on rajoute les bonnes extensions), mais pour les vidéos c’est pas le top.

    Code:
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite.com\.com/ [NC] 
    RewriteCond %{HTTP_REFERER} !^$ 
    RewriteRule \.(mp4|mp3|wmv|mov|avi|mpg|mpeg)$ elements/nohotlink.gif  [NC,L]

    => J’ai donc pensé à une autre solution, mais je n’arrive pas à la mettre en place : elle consiste à affecter une URL temporaire aux vidéos en fonction, par exemple, de la date.

    Par exemple :
    Code:
    RewriteRule ^%{TIME_DAY}/(.*).wmv$ videos/$1.wmv [NC,L]
    Comme ça le lien vers une vidéo n’est valable que 24 heures. Mais là il est trop facile de deviner qu’il s’agit de changer le numéro de jour dans l’url, donc j’aurais aimé quelque chose d’un peu plus compliqué, du genre :
    www.example.com/15646854/video23.wmv

    Sachant que dans tous les cas, il faut que ce soit réalisable dans un fichier .htaccess, et il faut aussi que le script PHP puisse retrouver cette url.

    Donc, est-il possible d’effectuer des opérations mathématiques dans un fichier htaccess ?
    Parce que si je pouvais faire un %{TIME_DAY}*1564+485-%{TIME_MON} ça arrangerait déjà pas mal mes problèmes.

    Je précise qu’il ne m’est pas possible d’effectuer des taches cron ou des trucs de ce genre.

    Voilà, je pense que vous comprenez mon problème et que d’autres doivent avoir le même !
    Si vous avez une solution, je suis preneur !

    Merci
     
  2. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    887
    J'aime reçus:
    0
    Sur un site j'ai eut ce problème là.
    J'ai un répertoire contenant des programmes

    Après un peu de réflexion, j'ai trouvé un truc qui fonctionne pas mal. Le premier utilisateur de la journée fait changer le nom du répertoire de téléchargement (avec un md5 par exemple), ce nouveau nom est inscrit dans la BDD.
    Pour télécharger les programmes, il faut absolument passer par ma page php qui donne le nom de ce répertoire car c'est impossible de le trouver au pif. Du coup je ne le protège même pas par un .htaccess ....

    Le nom du répertoire changeant tous les jours, un webmaster ne peut pas faire un lien direct vers les programmes (ou alors il doit aller le chercher tous les jours) :D
    Et je ne crois pas que ça va le brancher....

    Tu peux voir comment ça marche en bas de cette page http://www.jeromax.free.fr/index.php?R=netsend
    Et c'est complètement transparent pour l'utilisateur
     
  3. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Merci pour ta réponse. C'est vrai que ça a l'air d'être une solution interessante.

    Sauf que dans mon cas, je préfererais ne pas changer le nom du dossier en dur, car le SAFE MODE est activé chez mon hébergeur, et souvent quand je fais des manipulations de fichiers / dossiers via PHP ensuite je perds les droits sur ceux ci... Enfin bref c'est la merde, et ensuite je suis obligé de demander au support technique de me remettre les droits... le bordel quoi. Et je ne souhaite pas changer d'hébergeur.

    Donc voilà, d'autres idées ?
     
  4. Eservice
    Eservice WRInaute passionné
    Inscrit:
    18 Septembre 2002
    Messages:
    1 200
    J'aime reçus:
    0
    Bonjour zolt,

    - mettre les vidéos dans un répertoire dédié avec un mot de passe en .htaccess pour bloquer les accès extérieurs
    - remplacer les liens vidéo par un script php avec le nom en paramètre :
    - si le référent est ton site tu rediriges vers la vidéo avec un header() supplémentaire : content-type
    - sinon tu rediriges vers ta page
     
  5. srappaille
    srappaille WRInaute discret
    Inscrit:
    19 Janvier 2004
    Messages:
    179
    J'aime reçus:
    0
    Bonjour,

    Pour éviter qu'on (me) pique (facilement) une video, j'utilise pour ma part Macromedia Flash MX. Je l'importe, le j'exporte au format .flv et je l'appelle avec le composant "offert" par le produit.

    Exemple sur : -http://www.canneslions.be/fr/rmb-award/player.asp?id=160 (site en développement, soyez indulgent)

    Je n'ai pas compliqué la chose mais, on pourrait subordonner le chargement à la condition que l'obje(c)t soit chargé à partir d'un domaine donné.

    Cette possibilité nécessite une licence MF-MX mais elle offre l'avantage de ne pas dévoiler la source de votre vidéo. C'est une piste comme un autre, sans plus.

    Bien à vous,
     
  6. Morph1er
    Morph1er WRInaute occasionnel
    Inscrit:
    7 Juillet 2004
    Messages:
    280
    J'aime reçus:
    0
    Jeromax, je trouve ta solution excellente !!!

    Moi qui cherche une solution efficace, je crois l'avoir trouvé !!! grâce à toi.

    Mais voilà, juste une question, lors du renommage, comment ça va se passer ? Tous ceux qui téléchargait seront viré ? Sauf si on renomme vers les 5h du mat, là il ne devrait + rester grand monde mais, j'aimerai savoir auparavant ^^
     
  7. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Merci pour vos réponses. Je vais finalement me diriger vers la solution de jeromax car j'ai réussi à piger un peu mieux comment dompter le safe mode.

    Morph1er => Perso je pense définir que le premier user qui télécharge après 3h du mat, alors ce sera là que le dossier sera renommé. Car de 3h du mat à 9h c'est des heures creuses, mais y'aura bien un visiteur qui viendra télécharger une fois.
    Car effectivement, je pense que si on veut renommer un dossier pendant qu'un autre s'en sert, ça risque de foirer pour un des deux.
    Vers minuit, il y a encore du monde, d'où mon choix de décaler à 3h du mat. Qu'en penses-tu ?
     
  8. Morph1er
    Morph1er WRInaute occasionnel
    Inscrit:
    7 Juillet 2004
    Messages:
    280
    J'aime reçus:
    0
    Oui le choix semble bon.

    Moi je pensais faire ça via une tâche cron. Il me reste plus qu'à faire le script ^^. Mais va fallloir que je cherche pour créer une chaîne de caractères aléatoire.
     
  9. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Un ptit md5(time()) et ça roule, que tu substr si c'est trop long. J'ai testé aujourd'hui et en terme de performance c'est imbattable comparé aux fonctions qui te créent une chaine alphanumérique.
     
  10. franciscabrel
    franciscabrel Nouveau WRInaute
    Inscrit:
    10 Octobre 2004
    Messages:
    5
    J'aime reçus:
    0
    Bonjour, je suis exactement avec le même problème, je donne 3 vidéos wmv gratuites de 50Mo chacunes toutes les semaines et j'ai 500.000 visiteurs par mois...vous voyez le problème ! Ca me coute cher de rester gratuit...
    Deplus étant chez online.net je ne peux pas mettre de .htaccess, bref la solution de jeromax me semble l'idéal.
    Serais t'il possible d'avoir une partie de ton code ? (tu peux le signer), je n'ai plus fait de programmation depuis trop lontemps pour parvenir à le faire simplement.
    Tu es mon dernier espoir :cry: :cry: :cry:

    Ps : par contre il faudrait controler le referer je pense ? car le mec qui veut copier ton lien copie directement çà :
    http://www.jeromax.free.fr/downloadProg.php?F=JXNetsend
    et ca marche... :? (du coup je vois plus l'interet que tu changes ton repertoire en permanence)
     
  11. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    887
    J'aime reçus:
    0
    oui bien sûr il faut controler le referrer (mais certains utilisateurs le cachent...).
    En fait j'ai adapter mon cas à la question posée.
    Cela me servait en fait à compter le nombre de téléchargements.
    J'avais un programme sur telecharger.com dont je voulais compter le nombre de téléchargements depuis ce site, mais même en lui filant une adresse en amont, le site arrivait toujours à trouver l'adresse directe au fichier....
    Du coup mon compteur perso ne comptait plus rien.
    De cette manière, j'ai pu réussir à récupérer tous les téléchargements.
     
  12. franciscabrel
    franciscabrel Nouveau WRInaute
    Inscrit:
    10 Octobre 2004
    Messages:
    5
    J'aime reçus:
    0
    OK je comprends mieux.
    Serait il possible d'avoir l'extrait de ton code d'anti leeching ?
     
  13. hypocampe
    hypocampe WRInaute discret
    Inscrit:
    28 Mars 2004
    Messages:
    51
    J'aime reçus:
    0
    bonjour,

    je serais aussi interressé par ce code anti-leeching :wink:
     
  14. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    887
    J'aime reçus:
    0
    En fait, c'est un peu compliqué de le donner comme ça, parce qu'il y a plein de bout de code éparpillés...
    Mais c'est assez simple à expliquer :D
    C'est pas que je ne veux pas le donner, mais y'a rien à donner...
    1. Dans une base, sauvegarder une nouvelle chaine de caractères à la noix (ex: sc248rtvyjb246rtthr26) avec une fonction genre rand+md5
    2. Renommer le répertoire, où se trouve les infos que l'on veut "protéger",avec ce nom.
    ex de path pour un fichier: -http://ww.tonsite/sc248rtvyjb246rtthr26/video.mpg
    3. A chaque fois que vous souhaitez accéder à ce fichier, il faut aller chercher dans la base le nom à la noix et vous reconstruisez l'url

    ...après x temps vous repartez de 1.

    Et voila, c'est devenu impossible de faire un lien direct vers le fichier video.mpg car ce lien ne sera valable que x temps...
     
  15. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Voilà, moi c'est pareil sauf que le nom à la noix est stocké dans un fichier texte qui contient en ligne 1 : le nom à la noix, et en ligne 2 : la dernière date où le dossier a été renommé.
    Donc pour récupérer ces 2 infos tu as juste à te servir de la fonction file().

    Comme ça sur la page de téléchargement tu fais un test "Si la dernière date de renommage date d'avant aujourd'hui", alors on renomme et on stocke les nouvelles infos dans le fichier texte.
    Genre nous sommes le 28/01/05, si le dernier renommage date du 27 alors on renomme.

    Pour générer le nom à la noix un ptit md5(microtime()) et c'est bon il me semble.
     
  16. franciscabrel
    franciscabrel Nouveau WRInaute
    Inscrit:
    10 Octobre 2004
    Messages:
    5
    J'aime reçus:
    0
    Merci pour l'aide, je vous tiendrais au courant de mon avancement
     
  17. franciscabrel
    franciscabrel Nouveau WRInaute
    Inscrit:
    10 Octobre 2004
    Messages:
    5
    J'aime reçus:
    0
    J'ai fait çà et ca marche, je laisse mon code pour les feignants.

    Code:
    <? 
    $Datedujour = date(Ymd);
    $NewRep = md5(microtime());
    
    $host = ""; --A remplir
    $user = ""; --A remplir
    $pass = ""; --A remplir
    $bdd = ""; --A remplir
    mysql_connect($host,$user,$pass); 
    mysql_select_db($bdd);
    $table = ""; --A remplir
    
    $SQL = "SELECT * FROM $table WHERE ID='1'"; -- Dans mon cas une seule ligne
    $res = mysql_query($SQL);
    
    while($val=mysql_fetch_array($res)) 
    {
    $Updated = $val["Updated"];
    $Repertoire = $val["Repertoire"];
    
    if($Datedujour>$Updated)
    {
     rename($Repertoire,$NewRep);
     $SQL = "UPDATE $table SET Updated='".$Datedujour."',Repertoire='".$NewRep."' WHERE ID='1'";
     mysql_query($SQL);
    }
    echo "<a href=\"http://www.votresite.com/".$val["Repertoire"]."/mavideo.mpg\">";
    
    }
    mysql_close();
    ?>
    Bon j'ai fais vite fait, et ca fait lontemps donc je suis un peu rouillé, je trouve le traitement assez long, y a t il un moyen d'optimiser mon code (un while pour un seul enregistrement est à changer non ?)
     
  18. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Pas besoin du while effectivement : $val=mysql_fetch_array($res) suffit.

    Sinon pour avoir des chiffres sur l'optimisation de ton code, tu peux toujours faire un $time = microtime(); en tout début de code, et un echo microtime()-$time; en toute fin de code. Ca te donne quel chiffre en moyenne si tu fais ça ?

    L'usage d'un fichier texte au lieu d'une db permet peut-être d'optimiser tout ça ?
     
  19. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    887
    J'aime reçus:
    0
    Oui mais il faut alors protéger le fichier txt par un .htaccess
    Oui je sais c'est de la parano :twisted: , mais comme le but est d'empécher que quelqu'un te pique les fichiers.... C'est bête si le type reconstruit lui même l'url avec ton propre fichier txt qui affiche le nom du repertoire en clair... :wink:
     
  20. zolt
    zolt Nouveau WRInaute
    Inscrit:
    30 Juillet 2004
    Messages:
    14
    J'aime reçus:
    0
    Heu, si tu donnes à ton fichier un nom à la con genre bguirzgqzg.txt, que seul ton script php connaitra, tu es tranquille non ?
    Je n'ai toujours pas vu de script qui fonctionne et qui permette de te piquer tes sources php, donc à priori où est le risque ?
     
  21. franciscabrel
    franciscabrel Nouveau WRInaute
    Inscrit:
    10 Octobre 2004
    Messages:
    5
    J'aime reçus:
    0
    enfait je prefere passer par une bdd vu que les liens que je met change chaque semaine, donc je me suis créé un acran d'admin pour rajouter mes vidéos, et derriere mon script s'occupe de gerer les url.

    Sinon niveau temps finalemment ca va, en gros le premier mec qui arrive le jour d'apres se tape quelques sec, mais vu qu'il y a en 15000 derriere qui n'ont pas la modif, au final ca vaut le coup.

    en tout cas merci, ca fait du bien de limiter sa bande passante, j'ai déjà une baisse de 30% en 3 jours ;-)
     
  22. rituel
    rituel WRInaute impliqué
    Inscrit:
    15 Mars 2003
    Messages:
    897
    J'aime reçus:
    0
    Plus simple tu cryptes l'url de téléchargement avec ton nom de fichier avec comme clef la date d'ajourd'hui, le lien sera valable 24 heures, sinon tu peux le crypter avec la date + l'heure (sans les secondes), le fichier sera valable 1 minute :)
     
  23. ShadowLord
    ShadowLord Nouveau WRInaute
    Inscrit:
    10 Mars 2005
    Messages:
    1
    J'aime reçus:
    0
    Merci pour le script, mais qu'est ce qu'il faut faire pour le faire marcher (comment créer la table du début ?)

    Merci.
     
  24. Lymf
    Lymf WRInaute discret
    Inscrit:
    12 Mai 2005
    Messages:
    145
    J'aime reçus:
    0
    tiens, juste comme ça, avec les renommages à chaud... il se passe quoi si la vidéo fait 50 mb, que quelqu'un la télécharge a 23h55, finit en théorie vers 0h05 (ca dépend de la connexion je sais, c de la théorie pour mon exemple), et que un autre guignol se ramène à 0h01...
    Le répertoire va-t-il être changé? est-ce que ca va foirer les téléchargements en cours? George Bush sera-t-il réélu président des USA?
     
  25. Madrileño
    Madrileño Membre Honoré
    Inscrit:
    7 Juillet 2004
    Messages:
    31 738
    J'aime reçus:
    337
    Sympa les infos ici merci jeromax ;)

     
  26. mr_go
    mr_go WRInaute passionné
    Inscrit:
    21 Septembre 2005
    Messages:
    1 688
    J'aime reçus:
    2
    mouais, je vois pas en quoi cela sécurise trop l'access au repertoire, il reste assez aisé de récupérer le nom du repertoire dans ton fichier html...
     
Chargement...
Similar Threads - temporaires contrer leeching Forum Date
Que faire de mes pages temporaires Référencement Google 27 Novembre 2019
Vente de PDF : url temporaires? Monétisation d'un site web 14 Septembre 2015
SEO et Pages temporaires (voiture d'occasion) Problèmes de référencement spécifiques à vos sites 1 Avril 2014
Erreurs 404 dûes à des pages temporaires Crawl et indexation Google, sitemaps 31 Janvier 2014
Pages temporaires : redirection 302 ou canonical ? Référencement Google 20 Mars 2013
Popularité et liens temporaires Débuter en référencement 12 Mai 2011
Site beta : quelle est la meilleure structure pour des URL temporaires? Débuter en référencement 6 Janvier 2009
pages temporaires avant d'accéder à la home Débuter en référencement 9 Avril 2008
A quoi sert les fichiers temporaires de mysql ? Développement d'un site Web ou d'une appli mobile 9 Mars 2008
Backlinks temporaires : influence sur le positionnement ? Netlinking, backlinks, liens et redirections 26 Novembre 2007
google et les "problèmes temporaires" Crawl et indexation Google, sitemaps 28 Juillet 2007
Monétiser son audience et contrer AdBlock Monétisation d'un site web 27 Mai 2019
Nouvelle mise à jour Google pour contrer le spam Référencement Google 12 Juin 2013
Comment faire pour contrer une baisse sur tous les mots clés ? Débuter en référencement 11 Juillet 2012
Comment contrer le Negative SEO, déréférencement : solutions, conseils et cas Débuter en référencement 13 Juillet 2011
Sarkozy déclare vouloir contrer la numérisation de Google Google : l'entreprise, les sites web, les services 8 Décembre 2009
Comment contrer une entreprise concurrente sur Adwords AdWords 2 Septembre 2009
Contrer le problème d'envoi d'e-mails Administration d'un site Web 5 Décembre 2008
Comment contrer une attaque sur un blog ? Administration d'un site Web 25 Août 2008
La balise meta robots noodp pour contrer la description DMOZ Référencement Google 7 Août 2008