Dos códigos simples para evitar que las personas enlacen sus imágenes

Dos códigos simples para evitar que las personas enlacen sus imágenes

A todos les ha pasado. Está navegando por Internet cuando ve una de sus imágenes en otro sitio. Al instante, te molesta que la persona no te haya pedido permiso o ni siquiera te haya dado crédito por la imagen. Tal vez se pregunte «¿Qué se supone que debe hacer para evitar que esto vuelva a suceder?» Existen aplicaciones de hotlinking, pero generalmente hay una tarifa para comprar la licencia. Aquí hay dos formas de evitar que las personas enlacen sus imágenes.

Modificar el archivo .htaccess

La mejor manera de hacerlo es modificando su archivo .htaccess. Debe estar en el directorio principal del sitio web. Ábralo usando su editor de texto para agregar el siguiente código:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png|bmp)$ [F,NC]

RewriteCond permitirá los sitios (la URL de su propio sitio debe estar aquí) que pueden usar las imágenes en su sitio. Si desea permitir que los motores de búsqueda muestren sus imágenes en la función de búsqueda de imágenes, agregue el siguiente código:

RewriteCond %{HTTP_REFERER} !google. [NC]
 
RewriteCond %{HTTP_REFERER} !msn. [NC]
 
RewriteCond %{HTTP_REFERER} !yahoo. [NC]

Probablemente debería pensar en agregar su fuente RSS también, para que sus imágenes se muestren en su RSS.

RewriteRule son los archivos que no desea que las personas enlacen.

Usar código PHP

Si prefiere usar PHP en su lugar. Cree un nuevo archivo PHP y el siguiente código le permitirá hacer lo mismo que modificar el archivo .htccess:

<?php
$dir='secret-unknown-name-here/';
if ((!$file=realpath($dir.$_GET['file']))
    || strpos($file,realpath($dir))!==0 || substr($file,-4)=='.php'){
  header('HTTP/1.0 404 Not Found');
  exit();
}
$ref=$_SERVER['HTTP_REFERER'];
if (strpos($ref,'https://www.yoursite.com/')===0 || strpos($ref,'http')!==0){
  $mime=array(
    'jpg'=>'image/jpeg',
    'png'=>'image/png',
    'bmp'=>’image/bmp',
  );
  $stat=stat($file);
  header('Content-Type: '.$mime[substr($file,-3)]);
  header('Content-Length: '.$stat[7]);
  header('Last-Modified: '.gmdate('D, d M Y H:i:s',$stat[9]).' GMT');
  readfile($file);
  exit();
}
header('Pragma: no-cache');
header('Cache-Control: no-cache, no-store, must-revalidate');
include($file.'.php');
?>

Lo primero que debe hacer es reemplazar «secret-unknown-name-here» con algo que nadie, excepto a quien desea dar acceso, podrá adivinar. Asegúrese de crear un directorio con el mismo nombre. Donde dice, «https://www.yoursite.com/», reemplácelo con la URL de su propio sitio web. Agregue las extensiones de imagen que no desea permitir el enlace activo donde vea jpg, png y bmp. Cualquier archivo que no desee permitir el hotlinking, colóquelo en el directorio secreto.

La forma mejor y más fácil de evitar que las personas agreguen enlaces directos a sus imágenes es modificando el archivo .htaccess. Es rápido y simple en comparación con codificarlo con el método PHP. Sin embargo, cualquier forma depende de usted. Por otro lado, el hotlinking puede ser maravilloso para la optimización de motores de búsqueda (SEO), por lo que es posible que no desee ser demasiado estricto con esto si está practicando SEO. Sin embargo, realmente depende de ti cómo manejas los hotlinks y esto te ayudará a hacerlo.

Nota del editor: el método anterior funciona si y solo si las imágenes están alojadas en su propio servidor. Si está utilizando servicios de terceros como Amazon S3, los métodos anteriores no funcionarán.

Credito de imagen: zemalf

Experto Geek - Tu Guía en Tendencias Tecnológicas