2011-08-08 17 views
7

¿Hay alguna forma de diferenciar entre un sitio que está hotlinking una imagen y un usuario que está viendo la imagen en el sitio?Diferenciar entre hotlinking vs usuario en el sitio

<img src="http://example.com/img.jpg"> 

VS

usuario que está viendo directamente en http://example.com/img.jpg

Respuesta

2

se puede comprobar la URL de referencia, pero esto no es fiable al 100%.

El usuario puede suplantar la de referencia y apoderados o los ajustes del usuario pueden pelar/alterarlo.

+0

Para bien de los argumentos digamos el código en un sitio hotlinked era y luego un usuario hace clic en él tendría un árbitro. De todos modos para diferenciar los dos casos en ese escenario particular? – imgguy

+0

También para aclarar ¿adivino que quiere decir que hotlinking no deja referencia? – imgguy

+2

@imgguy Hotlinking puede dar un referido que no coincide con su propio sitio. – alex

5

Su servidor generalmente puede decir la diferencia entre un usuario mira una imagen directamente en su dominio, y el otro dominio hotlinking su imagen.

La solución habitual para detener hotlinking y permitir la visualización directa es a través de .htaccess, solo deje que Apache le envíe archivos de imágenes a su dominio, no sirva archivos de imágenes a otros dominios.

Así, un usuario podría todavía ir directamente a su archivo de imagen ... ya que su imagen está en su dominio, pero la imagen no podría ser utilizado en una etiqueta de imagen en otro dominio.

Por lo tanto, en algún lugar de su .htaccess que tendría algo como:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

Hay online tools que le ayudará a crear estas líneas de .htaccess.

Por supuesto que no tiene por qué ser restrictiva, puede permitir hotlinking en general, pero sólo se restringe la hotlinking de "dominios de problemas."

Además, en lugar de hotlinking parando, se puede obtener de Apache para servir una imagen si su elección para enlazadores en caliente, en lugar de la imagen que solicitan - http://www.yourdomain.com/hotlink.jpg en el caso a continuación:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC] 
RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/hotlink.jpg [R,L] 

.htaccessexamples.

+0

Gracias por la respuesta detallada. Queremos permitir hotlinking por completo. Solo estoy tratando de descubrir cómo puedo diferenciar entre hotlinking y las visitas reales de los usuarios a través de htaccess. – imgguy

+0

Debe verificar si esto ya no se está almacenando en un registro. Si no es así, debes configurar un registro. Todo esto sería apache, no PHP. –

Cuestiones relacionadas