PHPNET Assistance

Support et Entraide PHPNET => Forum général d'entraide => Discussion démarrée par: ericf le 26 octobre 2008 à 20:27:43

Titre: Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 26 octobre 2008 à 20:27:43
Bonjour,
J'utilise depuis plusieurs années un script anti-hotlink qui loggue normalement le nom du fichier recherché. Hors, sur phpnet, je ne récupère pas le nom du fichier, mais la mention "/hotlink2.php?namefile=image%5bL,QSA%5d".

Voici une partie de mon .htaccess :
#RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.***.com/hotlink2.php?namefile=image[L,QSA] #Ne renvoie pas le nom de l'image
RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.***.com/hotlink2.php?namefile=image [L]

Comment faire pour obtenir à nouveau le nom du fichier hotlinké ?
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 27 octobre 2008 à 09:30:37
Bonjour,

En mon sens il manque un espace entre "image" et "[L,QSA]".
Le code correct serait donc :
#RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.aideinfo.com/hotlink2.php?namefile=image [L,QSA]
RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.aideinfo.com/hotlink2.php?namefile=image [L]

Bonne continuation !
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 12 novembre 2008 à 12:26:56
Merci de ta réponse. J'ai déjà essayé, ça ne change rien.
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 12 novembre 2008 à 12:34:42
Salut,

Possibilité de voir la totalité de ton HTACCESS ?
J'ai des codes similaires sur PHPNET et cela fonctionne pour moi...
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 12 novembre 2008 à 13:10:02
Le problème n'est pas le blocage, mais la récupération du nom de fichier qui était appelé.

ErrorDocument 401 http://www.***.com/index.php?page=401
#ErrorDocument 403 http://www.***.com/403.html
ErrorDocument 404 http://www.***.com/index.php?page=404
ErrorDocument 500 http://www.***.com/index.php?page=500

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?***.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(services\.)?***.com/$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?***.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://(.*\.)?***.com/.*$ [NC]

#RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.***.com/hotlink2.php?namefile=image[L,QSA] #Ne renvoie pas le nom de l'image
RewriteRule \.(gif|jpg|png|bmp|jp2|tif|tga|wbmp)$ http://www.***.com/hotlink2.php?namefile=image [L]
#RewriteRule \.(zip|exe)$ http://www.***.com/[L,QSA]

Options -Indexes
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 12 novembre 2008 à 13:47:39
Salut,

Donc en faites si je comprend bien tu veux que à la place de "image" dans le querystring tu es le nom de l'image appelée.
C'est bien ça ?

Par exemple tu veux que "monImageAppellee.gif" redirige sur "http://www.aideinfo.com/hotlink2.php?namefile=monImageAppellee.gif".

NB : ce n'est à mon avis pas la bonne façon d'empêcher les hotlinking, et là ça va mettre beaucoup plus de temps pour charger tes images.
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 12 novembre 2008 à 15:09:15
Oui, je souhaite récupérer l'image hotlinkée. Ca me permet de savoir précisément ce qui est hotlinké.

Citer
ce n'est à mon avis pas la bonne façon d'empêcher les hotlinking, et là ça va mettre beaucoup plus de temps pour charger tes images.

Tu peux expliciter ?
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 12 novembre 2008 à 16:01:53
Je suppose que ton idée est de traiter l'appel des fichiers images via un script PHP qui va analyser la source de l'appel (via le REFERER par exemple), et va envoyer - ou non - le fichier au client.
Ce qui nécessite donc une analyse à chaques chargement et empêche la mise en cache de l'image, donc chargement plus lourd.

Alors que, en fin de ton htaccess ont trouve une méthode bien plus efficace et bien moins gourmande, pourquoi ne pas l'exploiter ?
Voir plus sur http://httpd.apache.org/docs-2.0/misc/rewriteguide.html#access (http://httpd.apache.org/docs-2.0/misc/rewriteguide.html#access)

Sinon pour ta solution c'est quelque choses du genre :
RewriteRule ([^/]+\.(gif|jpg|png|bmp|jp2|tif|tga|wbmp))$ http://www.aideinfo.com/hotlink2.php?namefile=$1 [L]
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 12 novembre 2008 à 21:05:16
Non, le blocage se fait par le .htaccess. Le fichier PHP, c'est juste pour pincer le "hotlinkeur"
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 13 novembre 2008 à 09:57:52
Salut,

Hum OK je comprend ^^ un genre de "sniffeur" :).
Sauf que le blocage HTACCESS se fait logiquement en amont de l'appel PHP.
Et donc le PHP n'est pas appelé, et le hotlinkeur pas identifié.

Sauf erreur de ma part...
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 13 novembre 2008 à 12:28:33
Ca marchait avant sur Venigo ! Ca ne marchait plus chez 1and1, et ça ne marche pas non plus ici. A la différence que PHPNet utilise Apache 2, les précédents utilisaient Apache 1.
La transmission à PHP se fait par http://www.****.com/hotlink2.php?namefile=image, qui devrait donc transmettre en paramètre le nom de l'image bloquée.
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 13 novembre 2008 à 13:29:02
Hum mauvaise interprétation de ma part, j'avais omis les rewritecond dans ton HTACCESS.
Pour l'histoire du nom de fichier qui n'est pas transmis tu as essayé mon code ?
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 13 novembre 2008 à 14:33:34
Avec $1, j'obtiens "namefile=png", et avec $0, "namefile=.png".
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 13 novembre 2008 à 14:38:49
En ayant bien mis "([^/]+\.(gif|jpg|png|bmp|jp2|tif|tga|wbmp))$" en masque de capture ?
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: ericf le 13 novembre 2008 à 14:54:39
Effectivement, j'avais oublié une partie de la ligne. Ca marche. Merci.
Titre: Re : Anti-hotlink : comment récupérer le nom du fichier ?
Posté par: Just le 13 novembre 2008 à 14:59:34
Sans soucis !
Ravis que ça fonctionne.

Bonne continuation.