Savoir avec certitude quel domaine appelle une image hotlinkée ?
38 messages
• Page 1 sur 3 • 1, 2, 3
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
Savoir avec certitude quel domaine appelle une image hotlink
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 !
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

- Messages: 8579
- Inscription: 23 Nov 2005
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/
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 impliqué

- Messages: 609
- Inscription: 14 Juil 2008
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
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.
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 - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
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 ?
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

- Messages: 8579
- Inscription: 23 Nov 2005
Ah oui bien vu, ça serait donc avec REMOTE_ADDR dans ce cas, non ?
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Peut-être une piste : http://techjunk.websewak.com/how-to-get-ip-address-and-long-code-from-a-url-using-php/
-

LiFi - WRInaute impliqué

- Messages: 609
- Inscription: 14 Juil 2008
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.
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
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é.
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 passionné

- Messages: 1874
- Inscription: 17 Déc 2006
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.
Après tu peux contrôler a 100% l'origine car c'est le serveur de ce site.
-

HawkEye - WRInaute accro

- Messages: 17013
- Inscription: 23 Fév 2004
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:
ou une alternative JS à ce genre de méthode
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 passionné

- Messages: 1874
- Inscription: 17 Déc 2006
il ne reste que le referer alors.
tu ne peux pas être sur qu'il n'a pas été changé.
tu ne peux pas être sur qu'il n'a pas été changé.
38 messages
• Page 1 sur 3 • 1, 2, 3
Lectures recommandées sur ce thème :
- example.domaine.com appelle www.domaine.com/dossier/example
- Identifier un internaute avec certitude
- Visiteur unique absolu, fidélité... quelle certitude ??
- Comment savoir ou on a deposer un nom de domaine !!
- comment savoir si un domaine est backlisté ?
- Savoir quand un nom de domaine sera libéré
- Comment savoir si un domaine recemment deposer blacklisté ?
- Comment savoir si domaine backlisté ou pas avant achat ?
- artichow, appelle d'une page
- Achat nom de domaine, savoir s'il n'est pas blacklisté ?
- Ajouter un moteur de recherche d'images sur son site - 24-07-2007
- Tutoriel sur le sitemap Google pour les images - 12-04-2010
- La terre vue par satellite : accord entre Google et Spot Image - 23-01-2007
- Google Dance de mai 2003 - 06-05-2003
- Google rachète Feedburner - 23-05-2007
- Comment éviter de se faire voler son nom de domaine... - 21-03-2008
- Idées d'optimisation du référencement des images - 19-09-2008
- Goggles, la recherche visuelle dans Androïd - 09-12-2009
Consultez la description détaillée des produits ou services de Google suivants : Google Goggles
- Les sous-domaines d'un site
Cet outil vous permet de trouver la liste des sous-domaines (indexés) d'un site.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

