Bonjour!

Une fois n'est pas coutume, je vais poser une question ici...

En inspectant d'un peu plus près que d'habitude les logs de mon site, je me suis rendu compte qu'une partie des hits proviennent de sites qui n'ont rien à voir avec le mien, mais qui pointent directement vers une image présente sur mon serveur.

Cela représente de la bande passante supplémentaire pour laquelle il est possible que je sois un jour facturé...

Est-ce qu'il serait possible (je pense au fichier .htaccess) de spécifier que les requêtes vers tel ou tel fichier doivent impérativement provenir d'un certain domaine (au hasard : le mien Smiley ravi ), sinon elles sont bloquées ?

Merci!
Bonjour,

Je suppose que c'est possible en testant l'en-tête HTTP Referrer, mais ce n'est pas totalement fiable (pour ma part, je désactive cet en-tête sur mon navigateur).
Modérateur
Salut,

On peut faire quelquechose comme ça il me semble :
<Files mon_image.png>

Order Allow, Deny
Deny from all
Allow from mon_domaine.fr
</Files>
koal64 a écrit :

Salut,

On peut faire quelquechose comme ça il me semble :


<Files mon_image.png>
Order Allow, Deny
Deny from all
Allow from mon_domaine.fr
</Files>



Hum...

Je ne crois pas que cela marcherait. Parce que si quelqu'un se connecte sur mon site et qu'il essaie de regarder l'image tout à fait légitimement, la requête ne viendra pas de mon domaine mais bien du sien...

Notez que s'il n'y a pas de solution... eh bien il n'y a pas de problème Smiley sweatdrop
Modifié par Gilles (14 Sep 2007 - 10:55)
Modérateur
Je ne comprends pas bien. Smiley confuse Si l'utilisateur est sur ton site et que tu mets un lien vers cette image, tu restes bien sur ton domaine non ? La seule contrainte, c'est de passer par ton site.

Sinon, au pire, tu procèdes à l'inverse en interdisant l'accès des sites incriminés mais c'est un peu plus fastidieux.
Gilles a écrit :
Notez que s'il n'y a pas de solution... eh bien il n'y a pas de problème Smiley sweatdrop

Sisi, il y a la solution de remplacer les images par une image de bisounours avec un message indiquant que tu aimerais que l'on te demande la permission avant d'utiliser des ressources de ton serveur. Smiley lol
Je viens de faire le test, j'avais raison, désolé koala Smiley cligne

Que le client consulte la page sur www.foo.com ou sur monsite.org, la requête qu'il envoie pour consulter l'image provient bien de sa machine à lui, et pas d'une machine du domaine foo.com ou monsite.org.

J'ai créé un fichier .htaccess interdisant l'accès à une image particulière de mon site à tout domaine autre que monsite.org en suivant la syntaxe que tu indiques.
J'ai ensuite essayé de consulter une page de monsite.org sur laquelle figure l'image en question, et je me suis fait jeter comme un malpropre. En effet, la requête provient non pas de monsite.org ou d'une machine qui serait monordinateur.monsite.org, mais d'une machine identifiée comme faisant partie de autredomaine.org....
Modifié par Gilles (14 Sep 2007 - 11:15)
Julien Royer a écrit :

Sisi, il y a la solution de remplacer les images par une image de bisounours avec un message indiquant que tu aimerais que l'on te demande la permission avant d'utiliser des ressources de ton serveur. Smiley lol


En l'occurrence, je remplacerais plutôt par une image de shadock Smiley lol
Modérateur
Gilles a écrit :
J'ai ensuite essayé de consulter une page de monsite.org sur laquelle figure l'image en question, et je me suis fait jeter comme un malpropre.
Ah ?! dac... Je pensais qu'à partir du moment où l'appel de l'image se faisait depuis une page de ton site, ça passerait... Au temps pour moi... Smiley langue
koala64 a écrit :
Je pensais qu'à partir du moment où l'appel de l'image se faisait depuis une page de ton site, ça passerait...

Le navigateur demande la page machin.html, et le serveur envoie la page machin.html.
Le navigateur analyse machin.html, constate qu'il a besoin de nomdedomaine.tld/images/truc.png, et demande donc ce fichier au serveur. Le serveur envoie.

Le lien entre machin.html et truc.png n'est établi que par le navigateur. D'où le problème.

Ceci étant dit, il faut voir du côté des referer, je pense. Je crois que j'avais croisé un sujet à ce propos sur Webmaster-Hub, il y a quelques temps.
Tout à fait par hasard, je suis tombé sur ce billet relatant un cas semblable.

edit: damned, je me mets à pondre du code wiki partout maintenant Smiley biggol
Modifié par Gilles (14 Sep 2007 - 12:21)
Salut,

sinon dans la série "pourquoi faire simple..." on peut jouer avec PHP. Par exemple sur les pages contenant des images on rajoute :
<?php
setcookie("surmonsite","1",0,"/");
?>
et les liens sont sous la forme :
<img src="getimg.php?img=monimage&type=png" ... />
getimg.php :
<?php
$rep_images = 'images/'; // on doit pouvoir trouver un peu mieux[cligne] 
$img = isset($_GET['img']) ? $_GET['img'] : 'image_par_defaut';
$type = isset($_GET['type']) ? $_GET['type'] : 'gif';
$ext = array ("gif", "png", "jpg");
if (!in_array($type, $ext)) {
	$img = 'image_par_defaut';
	$type = 'gif';
}
if (!isset($_COOKIE['surmonsite'])) {
	$img = 'image_par_defaut';
	$type = 'gif';
}
$image = $rep_images.$img.'.'.$type;
switch ($type)
{	case 'gif' :
		header("Content-type: image/gif");
		$im = imagecreatefromgif($image);
		imagegif($im);
		break;
	
	case 'png' :
		header("Content-type: image/png");
		$im = imagecreatefrompng($image);
		imagegif($im);
		break;
	
	case 'jpg' :
		header("Content-type: image/jpeg");
		$im = imagecreatefromjpeg($image);
		imagejpeg($im);
		break;
}
imagedestroy($im);
?> 
Bon... j'avais prévenu que c'était un peu lourd Smiley langue !
Heyoan a écrit :
Bon... j'avais prévenu que c'était un peu lourd Smiley langue !

Par contre, tu n'avais pas prévenu que :

- Ca empêche que les images soient mises en cache.
- Ca empêche les personnes n'ayant pas accès aux cookies de voir les images. Smiley smile
Modifié par Julien Royer (14 Sep 2007 - 14:26)
Bonjour !
Je ne suis pas féru du htaccess mais en principe si j'ai bien compris tu veux interdire l'accés à des images autre que par ton site, donc par ce fichier c'est possible..
### ON EVITE LE VOL D IMAGES, VIDEO, SON, FEUILLE DE STYLE, PDF ET ZIP
### LES VISITEURS DOIVENT PASSER PAR LE SITE.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://[-a-z0-9.]*domaine\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://[-a-z0-9.]*domaine\.com/.*$ [NC]	
RewriteCond %{HTTP_REFERER} !^https?://[-a-z0-9.]*google\.com/.*$ [NC]	
RewriteCond %{HTTP_REFERER} !^https?://[-a-z0-9.]*google\.fr/.*$ [NC]	
RewriteRule .*\.(gif|jpe?g?|jp2|png|svgz?|ico|css|pdf|zip|gz|js|mp3|m4a|mp4|mov|divx|avi|wma?v?|wmp|swf|flv|docx?|xlsx?|pptx?|vbs|rtf|asf?x?|odt|ods|odp|php|html|odg|odb)$ - [NC,F]

tu peux autoriser d'autres domaines ou moteurs de recherche,
et il doit être possible aussi de rediriger sur une autre page..
paul
@Heyoan> Merci de ta solution, mais il me semble que les moteurs de recherche n'acceptent pas les cookies... ce qui signifierait que les robots indexeraient les images (les alt ne sont pas modifiés), mais que la prévisualisation ne marcherait pas... (il est vrai que je n'avais pas envisagé la prévisuallsation lorsque j'ai posé ma question)

@paul> Cela a l'air plus simple, surtout car je compte le limiter aux images. Et si je veux étendre la liste à un autre robot, cela ne me semble pas insurmontable. Sauf que je ne comprends pas la fin de la dernière ligne Smiley confused
Modifié par Gilles (14 Sep 2007 - 19:43)
a écrit :
NC qui retire le problème de casse, F qui interdit l'accès aux fichiers reconnus.

bon faut pas m'en demander de trop j'avais trouvé cela lors de recherche pour interdire l'accés à des fichiers pdf en dehors du domaine d'origine, et ça marche, j'autorise 2 domaines à afficher les pdf, le domaine hébergeur de ces fichiers et le domaine qui les utilise plus des moteurs de recherche, ils peuvent par contre être affichés directement par l'url mais pas par un domaine autre que les 2 nommés.
donc google ou autre peut indexer et positionner ces pages.
Modifié par paul (14 Sep 2007 - 23:23)
Petite information rapide :
Pour répondre au code initialement posté par Koala64 : c'est un moyen qui permet par exemple d'interdire tous les utilisateurs d'un FAI particulier.

Exemple le code suivant :

order allow, deny
allow from all
deny from proxa.net

Jette à la porte tous les utilisateurs de free.

Complètement HS ici mais c'est pour la culture web.