Buenas, Tengo una tienda online de productos físicos y virtuales. Mi versión de Wordpress es 5.4.2 y de WooCommerce 4.3.0.
Tengo en robots la no indexación de directorios y no se pueden listar los directorios de la carpeta /uploads/woocommerce_uploads, pero me gustaría quitar el acceso a un archivo concreto de forma externa cuando se conoce la url, ya que en la tienda virtual si están logueados lo podrán descargar y el sistema no pone el enlace directo al archivo si no ese enlace lo construye con sus datos y los datos de archivo adjunto no es un enlace directo.
¿Se puede hacer algo?
Gracias
Hola Antonio,
Como lo mencionas WooCoommerce cuando son productos virtuales no genera una URL por lo que no podrás ser descargable el archivo.
Tal vez puedes probar crear un directorio en tu cPanel y subir en este los archivos que deseas descargar luego como mencionas denegar el acceso al directorio para que se pueda acceder a el.
En este directorio donde tendrás tus archivos puedes crear un archivo .htaccess y añadir la linea de código que no permita acceso
Order deny,allow
Deny from all
Un Saludo
Perdona, pero creo que no me he explicado bien. Los archivos que se adjuntan a los productos virtuales se adjuntan con una url desde /uploads/woocommerce_uploads, por tanto tienen url aunque en un pedido al cliente no le muestre esa url. Me gustaría limitar esa descarga cuando conoces la url y no estás logueado en woocommerce desde /uploads/woocommerce_uploads, por si hubiese algún problema intentar evitar la posible descarga al conocer la url directa, ¿Se puede hacer o eso puede fastidiar el funcionamiento de woocommerce?
Me gustaría poder limitar esa descargar de archivos cuando se conoce la url
Gracias
Hola Antonio.
WooCommerce crea una URl virtual, es decir, no es la misma para todos los usuarios.
Puedes limitar la descarga del archivo a una sola descarga o incluso que solo se pueda descargar durante el tiempo que tu le indiques.
En limite de descarga le indicas las veces que se puedes descargar el archivo y en la opción caducidad de descarga el tiempo en días que se puede descargar desde esa URL.
Un saludo
Buenas,
Todo eso ya lo sé y lo tengo así, pero el enlace que se pone en el producto virtual en sí (cuando lo configuras desde el producto en sí), si lo pones en la url te muestra el archivo, estés conectado como administrador o no.
Aunque luego en el pedido genere un enlace único para cada pedido, pero me gustaría (si se puede) limitar el acceso a esa url si no estas conectado en la parte privada pero por alguna razón conoces la url directa a ese archivo, ¿me explico?
Muchas gracias
Hola
Puedes usar un plugin para proteger la descarga o visualización de archivos, revisa:
https://es.wordpress.org/plugins/prevent-direct-access/
Saludos.
Ya he visto ese plugin, gracias. Veo que es de pago y que no deja proteger más de 9 archivos.
Una duda, he cambiado el directorio de esos archivos privados y quiero que ese carpeta únicamente la use woocommerce para los archivos virtuales ¿existe esa opción? es que veo que puedo modificar la carpeta medios, pero aunque la carpeta está dentro de medios no puedo acceder a vincular los archivos desde cada producto y variación. ¿Igual para esto existe alguna plataforma externa o plugin o algo que funcione mejor y se más seguro? Es sencillo, nuestros productos son variables, hay opciones físicas y otras virtuales, me gustaría que el producto virtual lo puedan descargar con un límite de descargas y fecha como ahora, ¿conocéis algo?.
Gracias
Hola Antonio.
Otra solución es utilizar un plugin para roles de usuario y otro para descargas:
Para el plugin de roles puedes utilizar
-> https://es.wordpress.org/plugins/user-role-editor/
Para el de descarga
https://es.wordpress.org/plugins/download-monitor/
con el plugin de los roles creas un nuevo rol para los usuarios que tiene. que descargar el archivo y en el plugin de descargas le asignas ese rol al archivo paar que solo puedan descargarlo los usuarios pertenecientes a ese rol.
Un saludo
Pero los roles supongo que son generales, ¿y el enlace sería único para cada pedido como hace ahora wocoomece? o sería el mismo para todos los que son clientes. Porque quiero que cada cliente acceda a los archivos que ha pagado únicamente y no pueda acceder a otros aunque esté registrado.
Gracias por todo
Hola Antonio,
Entiendo, ten en cuenta que la URL solo la conoces tu pero en el caso de que alguien mas la conozca woocommerce la bloquea.
Sin embargo tal vez puedes verificar proteger la carpeta donde tienes en este momento los archivo con contraseña desde tu cPanel, en el siguiente video puedes verificar como realizar el proceso -> https://www.youtube.com/watch?v=-DSgcTJ79rY
Un Saludo
Buenas de nuevo,
He encontrado esta web que indica lo que sabíamos, que el acceso a nivel url directa no es posible limitarlo desde .htaccess ni desde woocomerce, con los plugin que me decis pasaba un poco lo mismo, sabiendo la ruta y nombre de archivo se puede acceder...de todas formas en esta web que os pongo indica que si se podría hacer a nivel de servidor.
https://docs.woocommerce.com/document/digital-downloadable-product-handling/
Protecting your uploads directory
By default WooCommerce introduces a
.htaccess
file to protect yourwp-content/uploads/woocommerce_uploads
directory, however, this doesn’t guarantee the protection of this directory, since everything depends on the configuration of the server.Using NGINX Server?
If you using NGINX server for your site along with X-Accel-Redirect/X-Sendfile or Force Downloads download method, it is necessary that you add this configuration for better security:
# Protect WooCommerce upload folder from being accessed directly. # You may want to change this config if you are using "Redirect Only" method for downloadable products. # Place this config towards the end of "server" block in nGinx configuration. location ~* /wp-content/uploads/woocommerce_uploads/ { if ( $upstream_http_x_accel_redirect = "" ) { return 403; } internal; }And this the configuration in case you are using Redirect only download method:
# Protect WooCommerce upload folder from being accessed directly. # You may want to change this config if you are using "X-Accel-Redirect/X-Sendfile" or "Force Downloads" method for downloadable products. # Place this config towards the end of "server" block in nGinx configuration. location ~* /wp-content/uploads/woocommerce_uploads/ { autoindex off; }If you do not know which web server you are using, please reach out to your host along with a link to this support page.
¿Esto sería posible en nuestra web?
Ya me decis.
Hola Antonio.
No se realizan modificaciones a nivel servidor, piensa que utiliza un servidor compartido y lo qu e se realice afecta también a otros usuarios.
sabiendo la ruta y nombre de archivo se puede acceder.
Es complicado que un usuario sepa la ruta si tu no se la indicas antes.
¿y el enlace sería único para cada pedido como hace ahora wocoomece?
WooCommerce como ya comentamos crea una URL virtual que es diferente para cada usuario, es decir cada usuario que compre elmismo producto recibe un enlace diferente, no es la ruta donde está almacenado el archivo
Si no quieres que se almacene en la carpeta Uploads creas una carpeta con el nombre que quieras en la raíz de la instalación ( Carpeta del dominio ) y subes los archivos a esa carpeta, luego le pasas la URL en el producto de WooCommerce " tudominio.xxx/carpeta/nombrearchivo "
Un saludo
Buenas de nuevo, eso he hecho, cambiar el directorio y poner ahí los archivos.
Para darle mayor seguridad he hecho también lo que me indicaba tu compañera, de proteger la carpeta con contraseña desde cpanel, pero aun así puedo acceder a los archivos, ¿tengo que hacer algo más? ¿tiene caché o algo?
Ya me decis.
Gracias
Hola Antonio.
No, no tienes que hacer nada más, el problema que veo con eso es que al usuario tendrás que pasar el usuario y la contraseña para poder acceder al archivo.
Creo que te estas complicando un poco, es difícil si cambiaste la carpeta que el usuario pueda acceder si es que antes no0 se le indique la URL.
Un saludo
Gracias por vuestras indicaciones,
Es que me da miedo el tema de las indexación de esos archivos con buscadores, estoy bloqueando la carpeta desde robots.txt pero ese sistema no es el más fiable, y en algunas ocasiones hemos tenido problemas.
Por eso tantas vueltas. Igual hay otra solución mejor que no conozco.
Gracias