Solución simple para restringir el acceso a (algunas) cargas / descargas

11

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é:

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 uploadscarpeta, a menos que lo evites con .htaccess:

Options All -Indexes

El .htaccessarchivo debe colocarse dentro de la uploadscarpeta. 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?

Nicolai
fuente
Debe agregar su solución como respuesta en lugar de incluirla en la pregunta.
s_ha_dum
Y utilice letras mayúsculas / minúsculas adecuadas. Se lee como un chat ...
kaiser
Gracias por la crítica constructiva, la editaré y la reestructuraré pronto.
Nicolai

Respuestas:

8

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, wwwcarpeta;
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

  1. Instalé el complemento » wp-downloadmanager «
    • se filescreará una carpeta llamada dentro wp-contentdel proceso;
  2. Agregué un .htaccessarchivo a la nueva filescarpeta:
    • contenido de .htaccess:
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. Cambié una opción importante del complemento:
    • la opción que quiero decir es download method;
    • Lo cambié a output file;
  4. Agregué algunos archivos sobre la interfaz del complemento:
    • hay una opción llamada allowed to download;
    • que permite restringir el acceso en función del rol / capacidad del usuario;
  5. Hice algunas pruebas:
    • sin acceso directo a los archivos, no sobre la barra de direcciones o wget;
    • Se puede acceder a las descargas públicas a través de sus enlaces permanentes: elijo »enlaces agradables: sí« y »URL de descarga: ID de archivo« en el panel de opciones: la barra de direcciones / wget también funciona;
    • las descargas protegidas y restringidas solo son accesibles si ha iniciado sesión como usuario con la función / capacidades correctas;

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 .htaccessy el script en este caso es el complemento wp-downloadmanger.

Notas suplementarias

  • es absolutamente necesario cambiar el download methodaoutput file
  • y, por supuesto, es imprescindible que el .htaccessarchivo esté en su lugar

  • para comprobar el hecho de que el complemento asume el papel del script, consulte las wp-downloadmanger.phplíneas 207 a 227 (versión 1.6.1); esto se entiende como un punto complementario a la información vinculada

Nicolai
fuente