Situación inicial
Para un sitio que estoy configurando, estaba investigando todo el campo de asegurar cargas / descargas y restringir el acceso a ellos en función de las funciones / capacidades del usuario. Por supuesto, he leído algunas de las preguntas anteriores relacionadas con el tema (general) aquí, por razones de referencia, las más importantes / interesantes que encontré:
- ¿Cómo proteger las cargas si el usuario no ha iniciado sesión?
- ¿Cómo restringir el acceso a los archivos cargados?
- Restringir el acceso a los archivos dentro de una carpeta específica
- ¿Cómo hacer que la carga de medios sea privada?
- Fusionar script de descarga PHP en `functions.php`
Notas suplementarias
En general, no es una mala idea mejorar adicionalmente la seguridad de su instalación de WordPress, por ejemplo, proteger su wp-config.php
, hay muchas cosas que puede y debe hacer. Hay un montón de información por ahí sobre cómo hacerlo. Estoy en el contexto de esta pregunta principalmente sobre mis cargas / descargas.
Las cargas de Wordpress no son seguras, todos pueden explorar la uploads
carpeta, a menos que lo evites con .htaccess
:
Options All -Indexes
El .htaccess
archivo debe colocarse dentro de la uploads
carpeta. Pero eso no es realmente protegerlos, solo hace que sea más difícil encontrar los archivos. Además, puede evitar hotlinking
, restringir esencialmente el acceso basado en referrer
, aunque ese es un caso un poco diferente, pensé que lo mencionaría, no estoy elaborando más, puede encontrar mucha información al respecto.
Por supuesto, tiene la posibilidad de hacer publicaciones privadas o crear un tipo de publicación personalizada con archivos de plantilla adecuados para hacer que ese tipo de publicación sea privada, pero eso no es proteger sus archivos. Lo mismo se puede decir para envolver los archivos en condicionales como is_user_logged_in()
o is_admin()
.
En una nota al margen, hay muchos complementos que prometen hacer que sus archivos estén seguros y protegidos, pero muchos de ellos solo pretenden hacerlo, algunas de las razones son anteriores. Solo lo estoy explicando porque estoy bastante seguro de que no todos lo conocen, así que tenga en cuenta eso.
Objetivo
Mi intención era poder restringir el acceso a (algunas) cargas y descargas respectivamente. Y para asegurarse de que nadie no deseado pueda tener acceso a ellos, no por casualidad o si alguien conoce el nombre del archivo, los archivos deben ser realmente privados y seguros. Después de todo, solo ciertas personas deberían tener acceso sin excepciones.
Además, no tuve necesidad de privatizar todo el sitio, de hecho, eso sería contraproducente, ya que se utiliza con fines de presentación pública. Además, quería que la solución fuera fácilmente utilizable, por la sencilla razón de que algunas de las personas que trabajan con ella no son exactamente expertos en informática, como suele ser el caso.
Pregunta
De ahí la pregunta, ¿hay una manera (relativamente) simple de restringir el acceso a (algunas) cargas y las descargas respectivas? Y como lo hice, ¿eso significa una forma de protegerlos y protegerlos realmente?
Respuestas:
Por la presente estoy respondiendo mi propia pregunta, porque encontré una solución, pero estoy realmente interesado en sus opiniones al respecto. O tal vez tenga una solución mucho mejor, si es así, realmente me gustaría saberlo.
Resultado de la investigación
Los resultados de mi investigación fueron:
1. obtener los archivos fuera de la raíz del documento,
www
carpeta;2. no permita el acceso directo a la carpeta que contiene los archivos;
3. deje que un script maneje las solicitudes a los archivos;
Las fuentes de esos puntos están, al menos en su mayoría, incluidas en mi pregunta.
Solución
files
creará una carpeta llamada dentrowp-content
del proceso;.htaccess
archivo a la nuevafiles
carpeta:.htaccess
:Options All -Indexes
Order Deny,Allow
Deny from all
download method
;output file
;allowed to download
;Pensamientos concluyentes
Creo que la solución sigue los resultados de la investigación. Aparte de colocar los archivos afuera. Pero restringir el acceso a / proteger el directorio y dejar que una secuencia de comandos maneje las solicitudes de archivos se ha completado. La restricción de acceso es manejada por
.htaccess
y el script en este caso es el complementowp-downloadmanger
.Notas suplementarias
download method
aoutput file
y, por supuesto, es imprescindible que el
.htaccess
archivo esté en su lugarpara comprobar el hecho de que el complemento asume el papel del script, consulte las
wp-downloadmanger.php
líneas 207 a 227 (versión 1.6.1); esto se entiende como un punto complementario a la información vinculadafuente