Faire des URL temporaires pour contrer le leeching

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

zolt
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 30 Juil 2004

Faire des URL temporaires pour contrer le leeching

Message le Jeu Jan 20, 2005 10:45

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: Tout sélectionner
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: Tout sélectionner
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


jeromax
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 12 Nov 2003

Message le Jeu Jan 20, 2005 11:18

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

zolt
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 30 Juil 2004

Message le Jeu Jan 20, 2005 11:27

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 ?

Eservice
WRInaute passionné
WRInaute passionné
 
Messages: 1463
Inscription: 18 Sep 2002

Message le Jeu Jan 20, 2005 14:35

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


srappaille
WRInaute discret
WRInaute discret
 
Messages: 207
Inscription: 19 Jan 2004

Message le Jeu Jan 20, 2005 15:04

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,

Morph1er
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 307
Inscription: 7 Juil 2004

Message le Jeu Jan 20, 2005 18:45

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 ^^

zolt
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 30 Juil 2004

Message le Jeu Jan 20, 2005 23:35

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 ?

Morph1er
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 307
Inscription: 7 Juil 2004

Message le Ven Jan 21, 2005 17:57

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.

zolt
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 30 Juil 2004

Message le Ven Jan 21, 2005 19:46

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.

franciscabrel
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 10 Oct 2004

Message le Dim Jan 23, 2005 19:26

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)


jeromax
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 12 Nov 2003

Message le Dim Jan 23, 2005 20:20

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.

franciscabrel
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 5
Inscription: 10 Oct 2004

Message le Dim Jan 23, 2005 20:30

OK je comprends mieux.
Serait il possible d'avoir l'extrait de ton code d'anti leeching ?

hypocampe
WRInaute discret
WRInaute discret
 
Messages: 65
Inscription: 28 Mar 2004

Message le Jeu Jan 27, 2005 23:01

bonjour,

je serais aussi interressé par ce code anti-leeching :wink:


jeromax
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 12 Nov 2003

Message le Ven Jan 28, 2005 0:32

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...

zolt
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 14
Inscription: 30 Juil 2004

Message le Ven Jan 28, 2005 12:06

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.

Faire des URL temporaires pour contrer le leeching

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités