2009-03-15 11 views
5

¿Cuál es la mejor y más simple manera de evitar que las personas se vinculen a imágenes desde mi sitio web ASP.NET alojado? No es necesario que impida que todas las imágenes/recursos entren en caliente, solo deseo evitar enlaces directos a imágenes/recursos específicos en un sitio. FYI. Está alojado en GoDaddy.com, por lo que los trucos IIS probablemente no funcionarán.¿Cómo prevenir enlaces de imagen desde su sitio ASP.NET?

+0

un vistazo aquí. http://mvolo.com/blogs/serverside/archive/2006/11/10/Stopping-hot_2D00_linking-with-IIS-and-ASP.NET.aspx –

Respuesta

3

Transmitir las imágenes a través de una página ASPX es una buena solución. Aunque Referrer podría ser pirateado.

Lo que podría hacer es usar una sal única (palabra clave) y generar contra MD5 (SHA-1 o SHA-2) si realmente le preocupa la seguridad. También ejecute la hora de época actual también en contra de esto, esto también impone un vencimiento en las imágenes. Almacene este "código clave" en las cookies. Cada vez que se sirven imágenes, básicamente pasa esto a través de la cadena de consulta. La validación ocurre en ASPX en el otro extremo. Incluso podría regenerar un nuevo "código clave" entre cada solicitud usando una HTTPRequestModule o la página Global.asax.

Habrá gastos generales, pero evitará que alguien se caliente.

+0

+1 + Respuesta. Hay mucho allí. Probablemente vaya por el hash que expira y el controlador de extensión personalizado (a través del mecanismo 404) –

3

Puede rechazar cualquier solicitud de imágenes que no tengan su sitio en el campo del encabezado HTTP referer. Esa es la teoría. Para controlar las solicitudes en su aplicación, debe transmitir todas las imágenes a través de una página ASP (en lugar de vincularlas directamente).

2

Una cosa que he visto que me pareció inteligente es agregar una parte extra a la parte inferior de la imagen, y luego usar una técnica de sprite css para cortarla cuando se muestra en su sitio. Un hotlink ingenuo resultará en mostrar su porción adicional. Esto significará que la imagen está sesgada, por lo que no se ve bien en el otro sitio, y puede usar la parte adicional para mostrar su propia URL o cualquier otra cosa que desee.

8

La forma más simple de hacer esto es con un UrlRewrite en IIS 7.0.

https://help.maximumasp.com/KB/a738/using-url-rewrite-to-prevent-image-hotlinking.aspx

<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="PreventImageHotlinking" enabled="true" stopProcessing="true"> 


<match url=".*\.(gif|jpg|png)$" /> 
    <conditions> 
         <add input="{HTTP_REFERER}" negate="true" pattern="^$" /> 
         <add input="{HTTP_REFERER}" negate="true" pattern="http://www.YourDomain.com/.*" /> 
    </conditions> 
    <action type="Rewrite" url="/images/hotlinking.jpg" /> 
</rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
+0

¡Me encanta! Lo uso para archivos images/js/css y todo lo demás, ¡no quiero que otros se vinculen! – RoLYroLLs

Cuestiones relacionadas