WordPress Directo
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting
No Result
View All Result
WordPress Directo
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting
No Result
View All Result
WordPress Directo
No Result
View All Result

Cómo impedir la descarga directa de archivos en WordPress con un solo script

MyR by MyR
9 marzo 2025
in Noticias
Reading Time: 6 mins read
0

En WordPress, los archivos subidos a la biblioteca de medios son accesibles mediante una URL directa, lo que permite que cualquier persona con el enlace pueda descargarlos sin restricciones. Esto representa un problema de seguridad si se trata de documentos privados, archivos de pago o recursos exclusivos que solo deberían estar disponibles para usuarios autorizados.

Este artículo explica cómo impedir la descarga directa de archivos en WordPress mediante una combinación de reglas en .htaccess y un script en PHP. Con esta solución, solo los usuarios autenticados con roles específicos podrán acceder a los archivos protegidos.


¿Por qué es importante restringir la descarga directa de archivos?

Controlar el acceso a los archivos subidos a WordPress aporta varias ventajas clave:

Artículos relacionados

Vulnerabilidad crítica en plugin de Seguridad para WordPress expone más de 4 millones de sitios

18 diciembre 2024

Cómo hacer tu sitio de WordPress inclusivo en 2025

19 marzo 2025

FlyingPress: el plugin de caché para WordPress que optimiza la velocidad real del usuario

1 mayo 2025

WordPress.com actualiza su interfaz para alinearse con el núcleo de WordPress

8 febrero 2025

1. Seguridad mejorada

Impide que usuarios no autorizados accedan a documentos privados, evitando la filtración de información sensible.

2. Protección de contenido premium

Si vendes contenido digital (ebooks, cursos, imágenes, plantillas), restringir la descarga evita que los usuarios compartan los enlaces y distribuyan el contenido sin autorización.

3. Optimización del rendimiento

Al limitar el acceso a archivos mediante una solución basada en código, evitas sobrecargar el servidor con plugins adicionales que pueden afectar la velocidad de carga del sitio.

4. Control total de los permisos

Puedes definir qué roles de usuario tienen acceso a los archivos protegidos, asegurando que solo los administradores, editores o suscriptores premium puedan descargarlos.


Cómo funciona la restricción de descarga en WordPress

Este método se basa en dos pasos clave:

  1. Bloquear el acceso directo a ciertos archivos mediante un ajuste en el archivo .htaccess.
  2. Verificar los permisos del usuario con un script en PHP antes de permitir la descarga.

De esta forma, cualquier intento de acceder a un archivo protegido sin iniciar sesión o sin los permisos adecuados será bloqueado.


Paso 1: Configurar .htaccess para redirigir las descargas

El archivo .htaccess permite interceptar las solicitudes de archivos antes de que sean procesadas por WordPress. Para impedir la descarga directa, agrega este código al archivo .htaccess en la raíz de tu sitio web:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Bloquear acceso directo a archivos protegidos y redirigirlos a index.php
RewriteRule ^wp-content/uploads/.*protegido_.*\.(pdf|zip|docx|jpg|png)$ index.php [L]
</IfModule>

¿Cómo funciona este código?

  • Cualquier archivo en la carpeta /uploads/ cuyo nombre comience con «protegido_» será bloqueado para el acceso directo.
  • En lugar de descargar el archivo directamente, la solicitud será redirigida a index.php, donde se verificará si el usuario tiene los permisos adecuados.

Paso 2: Implementar el control de acceso con PHP

Para gestionar quién puede descargar los archivos protegidos, añade el siguiente código a functions.php de tu tema hijo o en un plugin de snippets como WPCode:

add_action( 'init', 'restringir_acceso_a_archivos' );

function restringir_acceso_a_archivos(): void {
	$request_uri = $_SERVER['REQUEST_URI'];

	// Verificar si el archivo solicitado es un archivo protegido
	if ( preg_match( '#/wp-content/uploads/\d{4}/\d{2}/protegido_.*\.(pdf|zip|docx|jpg|png)$#i', $request_uri ) ) {

		// Redirigir a la página de inicio de sesión si el usuario no está autenticado
		if ( ! is_user_logged_in() ) {
			wp_redirect( home_url( '/wp-login.php?redirect_to=' . urlencode( $request_uri ) ) );
			exit;
		}

		// Obtener los roles del usuario actual
		$current_user = wp_get_current_user();
		$roles_permitidos = array( 'administrator', 'editor' );

		// Bloquear la descarga si el usuario no tiene los permisos adecuados
		if ( ! array_intersect( $roles_permitidos, $current_user->roles ) ) {
			wp_die( 'No tienes permisos para acceder a este archivo.', 'Acceso denegado', array( 'response' => 403 ) );
		}

		// Obtener la ruta real del archivo
		$file_path = ABSPATH . parse_url( $request_uri, PHP_URL_PATH );

		// Si el archivo existe, permitir la descarga
		if ( file_exists( $file_path ) ) {
			header( 'Content-Type: application/octet-stream' );
			header( 'Content-Disposition: attachment; filename="' . basename( $file_path ) . '"' );
			header( 'Expires: 0' );
			header( 'Content-Length: ' . filesize( $file_path ) );
			readfile( $file_path );
			exit;
		} else {
			wp_die( 'El archivo solicitado no existe.', 'Archivo no encontrado', array( 'response' => 404 ) );
		}
	}
}

Explicación del código PHP

  1. Interceptar la solicitud de archivos protegidos
    • Se analiza la URL de la solicitud para verificar si el archivo pertenece a la carpeta /uploads/ y si su nombre comienza con «protegido_».
  2. Verificar si el usuario está autenticado
    • Si el usuario no ha iniciado sesión, será redirigido a la página de acceso de WordPress.
  3. Control de permisos
    • Solo los usuarios con los roles administrador o editor pueden descargar los archivos.
    • Si el usuario no tiene permisos, se mostrará un mensaje de «Acceso denegado».
  4. Forzar la descarga del archivo
    • Si el usuario tiene permiso y el archivo existe, se envía como descarga directa en formato binario.
    • Si el archivo no existe, se muestra un mensaje de error.

Conclusión: Mayor seguridad sin necesidad de plugins adicionales

Este método ofrece una solución efectiva y ligera para restringir la descarga directa de archivos en WordPress.

✔ Mayor seguridad: Evita que usuarios no autenticados descarguen archivos privados.
✔ Control total de acceso: Define qué roles de usuario pueden acceder a los archivos protegidos.
✔ Sin impacto en el rendimiento: No requiere plugins adicionales, lo que mejora la velocidad del sitio.

Si administras una web con contenido exclusivo o manejas información sensible, implementar este sistema te permitirá tener un mayor control sobre quién accede a tus archivos.

Con esta configuración, solo los usuarios con los permisos adecuados podrán descargar los documentos protegidos, garantizando un entorno más seguro para tu contenido en WordPress.

Tags: ficheroshtaccessprotección
ShareTweetSendSharePin
MyR

MyR

Te puede interesar...

Noticias

¿Qué diferencia hay entre la caché del servidor, la caché del navegador y la caché del sitio web? Guía completa para acelerar tu página

27 junio 2025

La velocidad lo es todo en internet. Si un sitio tarda más de unos...

Noticias

El frustrante error HTTP de WordPress: Por qué ocurre y cómo solucionarlo en 2025

26 junio 2025

Una de las pesadillas más comunes para desarrolladores y administradores de sitios web sigue...

Noticias

Elementor celebra su noveno aniversario con descuentos de hasta el 75 % en toda su plataforma

22 junio 2025

La popular herramienta de creación web para WordPress lanza una campaña especial con importantes...

Noticias

Actualizar o arriesgar: El talón de Aquiles de la seguridad en WordPress está en los plugins y temas

12 junio 2025

WordPress sigue siendo el sistema de gestión de contenidos más popular del mundo, impulsando...

No Result
View All Result
Plugin Imagify, optimizar imágenes
wordpress hosting NVME
Elegant Themes WordPress
elementor editor plugin




Últimos artículos

Destaca tu código fuente con WordPress con SyntaxHighlighter Evolved

10 febrero 2012

Protege tu tienda online: Se descubre una vulnerabilidad crítica en el complemento Stripe Gateway

24 junio 2023

Utilizar un cron para ejecutar wp-cron.php

20 febrero 2013

Los mejores y necesarios plugins para WordPress

21 marzo 2024

Cómo mostrar las fotos de Instagram en un widget

4 octubre 2017
WordPress Directo

WPDirecto.com es una revista especializada en WordPress y WooCommerce que ofrece una amplia gama de recursos, incluyendo tutoriales, análisis de plugins y plantillas, consejos de optimización y estrategias de SEO, para ayudar a los usuarios a mejorar y personalizar sus sitios web, manteniéndolos informados sobre las últimas novedades y tendencias en el mundo de WordPress.

Menu

  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting

Información

WPDirecto es un medio de Medios y Redes:
  • Artículos patrocinados
  • Servicio de diseño web
  • Contacto
  • Acerca de MyR
  • Política de privacidad y cookies
  • Aviso Legal

© 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.

No Result
View All Result
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting

© 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.