apache .htaccess mod-rewrite hotlinking

apache - (htaccess) ¿Cómo prevenir un archivo de DIRECT URL ACCESS?



.htaccess mod-rewrite (4)

Esta es mi segunda publicación por el mismo problema. Porque la publicación anterior necesitaba un poco más de ejemplo.

Ok, digamos de nuevo, estoy usando Apache y tengo una carpeta web de muestra (en mi Localhost) como:

En la carpeta, los archivos serán:

  • index.html
  • sample.jpg
  • .htaccess

El "index.html" simplemente incluirá:

<html> <body> <img src="sample.jpg" /> </body> </html>

Cuando ejecuto el sitio web en http://localhost/test/ , simplemente se mostrará la imagen `sample.jpg ''en la página.

ENTONCES EL PROBLEMA AQUÍ ES :

  • Quiero evitar que la imagen se muestre como http://localhost/test/sample.jpg directamente en la barra de direcciones.

Nota:
Después de un día de obtener las respuestas a continuación, encontré todas las soluciones lógicamente funcionan, pero el problema con Firefox. Quiero decir, las respuestas a continuación dan la solución al probar en cada navegador pero no con Firefox.


¡La regla de rosipov funciona muy bien!

Lo uso en sitios en vivo para mostrar un mensaje en blanco o especial;) en lugar de un intento de acceso directo a los archivos que prefiero proteger un poco de la vista directa. Creo que es más divertido que un 403 Forbidden.

Entonces, tomando la regla de rosipov para redirigir cualquier solicitud directa a los archivos {gif, jpg, js, txt} a ''messageforcurious'':

RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www/.)?domain/.ltd [NC] RewriteCond %{HTTP_REFERER} !^http://(www/.)?domain/.ltd.*$ [NC] RewriteRule /.(gif|jpg|js|txt)$ /messageforcurious [L]

Lo veo como una manera educada de prohibir el acceso directo, por ejemplo, a archivos sensibles de CMS como xml, javascript ... con seguridad en mente: a todos estos bots que garabatean la web hoy en día, me pregunto qué hará su algo con mi '' mensajeforcurious ''.


En primer lugar, encuentre dónde se encuentra el archivo de configuración de apache httpd.conf. Si usa Debian, debería estar aquí: /etc/apache/httpd.conf . Usando algún editor de archivos como Vim o Nano, abra este archivo y busque la línea que se ve de la siguiente manera:

Options Includes Indexes FollowSymLinks MultiViews

luego elimine los índices de palabras y guarde el archivo. La línea debería verse así:

Options Includes FollowSymLinks MultiViews

Una vez hecho esto, reinicie apache (por ejemplo, /etc/init.d/apache restart en Debian). ¡Eso es!


Pruebe lo siguiente:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost.*$ [NC] RewriteRule /.(gif|jpg)$ - [F]

Devuelve 403, si accede a las imágenes directamente, pero les permite mostrarse en el sitio.

Nota: Es posible que al abrir una página con imagen y luego copiar la ruta de esa imagen en la barra de direcciones, pueda ver esa imagen, solo por la memoria caché del navegador, de hecho, esa imagen no se ha cargado desde el servidor ( de Davo, comentario completo a continuación) .


Según sus comentarios, parece que esto es lo que necesita:

RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost/ [NC] RewriteRule /.(jpe?g|gif|bmp|png)$ - [F,NC]

Lo probé en mi servidor local y parece estar funcionando bien.