Savoir avec certitude quel domaine appelle une image hotlinkée ?

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


HawkEye
Modérateur
Modérateur
 
Messages: 15029
Inscription: Lun Fév 23, 2004 12:33

Savoir avec certitude quel domaine appelle une image hotlink

Message le Mar Jan 20, 2009 13:48

Bonjour à tous.

J'aimerais donner la possibilité à certains domaines (ou sous-domaines) d'afficher une image dynamique. Est-ce quelqu'un aurait une idée de la façon la plus simple de vérifier (en php) que le l'URL qui appelle cette image distante fait partie d'une liste de noms de domaines "identifiés" et autorisés.

Je voudrais éviter qu'un tiers puisse se faire passer pour un des domaines en question: l'image ne devrait donc pouvoir être affichée que sur les domaines précisément autorisés, voire même sur une "URL type".

Exemple: l'image peut s'afficher sur -http://www.example.com/tests/* ou sur -http://site2.com/log/check.html qui sont des urls autorisés (stockés en db), mais pas sur *.site3.net/* qui ne l'est pas.

Je ne sais pas si c'est très clair ? :)

D'avance merci !


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Mer Nov 23, 2005 10:38

Message le Mar Jan 20, 2009 13:56

Tu peux faire ça directement via le htaccess il me semble, en spécifiant de manière explicite les sites qui doivent pouvoir hotlinker tes images. J'ai un exemple de ça (mais pas sous la main là) que je peux te coller ici tantôt (je m'en sers pour permettre aux agrégateurs d'afficher les images dans les flux rss).

Edit : si ton image est dans un dossier à elle tu peux donc utiliser ce genre de choses : http://blogtoolbox.fr/empecher-le-hotlinking-dimages/
Dernière édition par UsagiYojimbo le Mar Jan 20, 2009 14:02, édité 1 fois.


LiFi
WRInaute passionné
WRInaute passionné
 
Messages: 609
Inscription: Lun Juil 14, 2008 2:24

Message le Mar Jan 20, 2009 13:59

Est-ce que la variable d'environnement $_SERVER['HTTP_REFERER'] ne suffit pas ?
Même si elle peut etre falsifiée, ça stoppera l'immense majorité des cas, non?

Tu fais
Code: Tout sélectionner
if (strpos($_SERVER['HTTP_REFERER'], 'tondomaine') === FALSE) {
C'est bon, renvoie l'image
} else {
Renvoie une image faisant de la pub pour ton site, ou pas d'image du tout.
}


Note les trois === parce que strpos peut renvoyer 0 si la chaine recherchée est trouvée dès le début de la chaine.


HawkEye
Modérateur
Modérateur
 
Messages: 15029
Inscription: Lun Fév 23, 2004 12:33

Message le Mar Jan 20, 2009 14:13

Merci pour ces premières pistes ;)

En fait les deux contraintes principales sont:

1. uniquement php: les domaines autorisés sont stockés en db (gestion des accès, voire des abonnements).

2. ne doit pas être falsifiable (ok, c'est toujours possible, mais disons que seul un gros félé doit pouvoir y arriver ;) ).


Je vais néanmoins voir dans quelle mesure on peut falsifier $_SERVER['HTTP_REFERER']: si ça se trouve, le niveau de sécurité sera suffisant.

Est-ce que, pour améliorer la sécurité du principe, il serait envisageable de récupérer l'ip du serveur qui héberge le site "demandeur" de l'image ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Mer Nov 23, 2005 10:38

Message le Mar Jan 20, 2009 14:15

$_SERVER["SERVER_ADDR"] ?


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 866
Inscription: Mar Aoû 05, 2003 14:49

Message le Mar Jan 20, 2009 14:27

euh çà c'est pour récupérer son ip de serveur


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Mer Nov 23, 2005 10:38

Message le Mar Jan 20, 2009 14:30

Ah oui bien vu, ça serait donc avec REMOTE_ADDR dans ce cas, non ?


HawkEye
Modérateur
Modérateur
 
Messages: 15029
Inscription: Lun Fév 23, 2004 12:33

Message le Mar Jan 20, 2009 14:35

Ca c'est l'IP du client ;)

Ce que je cherche, c'est l'IP du serveur site par lequel l'image est demandée ;)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5178
Inscription: Mer Nov 23, 2005 10:38

Message le Mar Jan 20, 2009 14:40



LiFi
WRInaute passionné
WRInaute passionné
 
Messages: 609
Inscription: Lun Juil 14, 2008 2:24

Message le Mar Jan 20, 2009 14:41

Ca a mon avis tu ne peux pas car c'est le client qui demande l'image, donc la demande vient de l'ip du client. Et le http_referrer n'est qu'une variable transmise avec la demande de l'image, c'est pour ca qu'elle peut etre falsifiée, mais franchement ca sera tellement minime que ca ne vaut pas le coup d'aller plus loin dans la recherche de solutions, a moins bien sur que ton public soit des geeks, dans ce cas le minime peut se transformer en presque moitié, surtout si des geeks publient sur leur blog la façon de contourner ta protection.


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 866
Inscription: Mar Aoû 05, 2003 14:49

Message le Mar Jan 20, 2009 14:46

à voir du coté de javascript à ce moment là car google avec son api maps filtre parfaitement par domaine ...


HawkEye
Modérateur
Modérateur
 
Messages: 15029
Inscription: Lun Fév 23, 2004 12:33

Message le Mar Jan 20, 2009 15:10

julienr, comment ferais-tu, toi, dans ce cas, en JS par exemple (je n'y connais RIEN en js).

Voici la démarche, un peu plus clairement.

1. un client (un site web, autorisé) appelle un marqueur (ce sera plus simple de le nommer comme ça), incluant une variable (disons qu'il faut que je sache que $foo=bar dans sa demande.

2. je dois pouvoir récupérer l'info suivante:

- quel est le site demandeur ?
- quelle est la valeur de $foo

3. sur base de ces infos, je fais un petit tour dans ma db, et je renvoie:

- soit une image indiquant qu'il n'est pas autorisé
- soit une image dépendante de ce que je trouve dans la db pour $foo (si foo est positif j'envoie une image verte, si foo est négatif j'envoie une image rouge).


Peu importe quel IP client demande l'image, tant que c'est au sein d'une page d'un site autorisé.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mar Jan 20, 2009 15:36

ne peux-tu pas passer par un script sur le site distant qui serve de passerelle?
Après tu peux contrôler a 100% l'origine car c'est le serveur de ce site.


HawkEye
Modérateur
Modérateur
 
Messages: 15029
Inscription: Lun Fév 23, 2004 12:33

Message le Mar Jan 20, 2009 15:48

Pas vraiment: je n'ai pas le contrôle du site distant.
C'est supposé par exemple être ton site à toi, si tu souhaitais faire appel à ce service. Je voudrais que tu n'aies qu'à coller un truc du genre dans ton code:

Code: Tout sélectionner
<img src="example.com/get/'.$foo.'.gif" />


ou une alternative JS à ce genre de méthode ;)


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mar Jan 20, 2009 16:10

il ne reste que le referer alors.
tu ne peux pas être sur qu'il n'a pas été changé.

Savoir avec certitude quel domaine appelle une image hotlinkée ?

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... 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


cron