Avisos
Vaciar todo

Restringir acceso a archivos de la carpeta upload  

 
Dario
 Dario
Usuario activo

Hola,

 
he creado una parte privada para mis clientes el problema es que ellos suben archivos allí que se guardan en la carpeta Uploads. 
 
He restringido la navegación en esa carpeta pero el problema es que si se conoce la ruta de ese archivo si que se puede acceder aunque el usuario no este conectado.
 
Me podríais ayudar a solucionarlo?
 
Muchas gracias
Citar
Respondido : 19/04/2020 7:09 pm
Bulmaro
 Bulmaro
Soporte CMS Webempresa Moderator

Hola Dario,

Podrías utilizar un plugin como simple-download-monitor, para proteger y rastrear las descargas de tu WordPress.

Saludos 🙂

ResponderCitar
Respondido : 20/04/2020 1:13 am

Dario
 Dario
Usuario activo

@bulmaro-webempresa

Hola Bulmaro,

gracias por tu respuesta pero no es lo que estoy buscando. 

 

Tengo un plugin de soporte con tickets y allí tanto mis clientes como yo intercambiamos archivos con datos personales. Como ya he comentado he cortado el acceso a la ruta, así que nadie puede llegar al índex pero el problema es que si conoces la url del archivo (ya se que es muy improbable que alguien la averigüe) si que puedes acceder a ella y claro...es información sensible y con la normativa no me la quiero jugar.

 

Gracias de nuevo 

ResponderCitar
Respondido : 20/04/2020 8:50 am
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Dario.

Prueba lo siguiente:

.- Edita el archivo htaccess ya añade los siguiente:

# Proteger el archivo .htaccess
<files .htaccess>
Order Allow,Deny
Deny from all
</files>
# Proteger el archivo wp-config.php
<files wp-config.php>
Order Allow,Deny
Deny from all
</files>
# Proteger la navegación de carpetas
Options All -Indexes

 

Este código lo que hace es proteger tu archivo htaccess.

 

.- Accede a la carpeta Uploads y crea un nuevo archivo con le nombre .htaccess

.- Al nuevo archivo creado añade lo siguiente:

# Bloquear la navegación de la carpeta de Uploads y dar seguridad de subida de archivos
<Files ~ ".*\..*">
Order Allow,Deny
Deny from all
</Files>
<FilesMatch "\.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls|numbers|odt|pages|key|zip|rar)$">
Order Deny,Allow
Allow from all
</FilesMatch>

 

Otra opción sería utilizar plataformas externas para esos documentos como pueda ser Drive, Dropbox.....

-> https://wordpress.org/plugins/external-media/

 

Un saludo

 

ResponderCitar
Respondido : 20/04/2020 11:02 am

wpdoctor-revisa-la-salud-de-tu-wordpress

Dario
 Dario
Usuario activo

Nada, 

he seguido los pasos y se sigue pudiendo acceder si copio la url directa

 

El .htaccess que tengo que modificar es el del root o el de la carpeta donde esta la instalación de WP?

 

🙁 

ResponderCitar
Respondido : 20/04/2020 12:26 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Dario.

En la raíz de la instalación tienes un archivo .htaccess, en ese archivo tienes que añadir el primer bloque de código que te indique.

Para el siguiente bloque tienes que acceder a la carpeta uploads y crear un  nuevo archivo .htaccess que se encontrara dentro de la carpeta upload.

En ese nuevo archivo .htaccess de la carpeta uploads, tienes que añadir el segun codigo que te indique.

 

Un saludo

ResponderCitar
Respondido : 20/04/2020 12:54 pm

Cursos Gratuitos WordPress

Dario
 Dario
Usuario activo

nada, se sigue pudiendo acceder desde la URL directa

ResponderCitar
Respondido : 20/04/2020 1:03 pm
Karen Rios
 Karen Rios
Usuario Moderator

Hola Dario,

¿Puedes enviarnos una captura de tu archivo .htaccess donde tienes el código que copiaste?

También puedes intentar proteger la carpeta completa de wp-content . Puedes verificar como hacerlo siguiendo los pasos del siguiente articulo Contenido solo visible a usuarios registrados

Saludos

 

Esta publicación ha sido modificada el hace 5 años por Karen Rios
ResponderCitar
Respondido : 20/04/2020 2:10 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Dario
 Dario
Usuario activo

Os copio el código entero porque no me deja subir la captura.

 

  1. # BEGIN WP Rocket v3.4.4
  2. # Use UTF-8 encoding for anything served text/plain or text/html
  3. AddDefaultCharset UTF-8
  4. # Force UTF-8 for a number of file formats
  5. <IfModule mod_mime.c>
  6. AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml
  7. </IfModule>
  8. # FileETag None is not enough for every server.
  9. <IfModule mod_headers.c>
  10. Header unset ETag
  11. </IfModule>
  12. # Since we’re sending far-future expires, we don’t need ETags for static content.
  13. # developer.yahoo.com/performance/rules.html#etags
  14. FileETag None
  15. # Send CORS headers if browsers request them; enabled by default for images.
  16. <IfModule mod_setenvif.c>
  17. <IfModule mod_headers.c>
  18. # mod_headers, y u no match by Content-Type?!
  19. <FilesMatch "\.(cur|gif|png|jpe?g|svgz?|ico|webp)$">
  20. SetEnvIf Origin ":" IS_CORS
  21. Header set Access-Control-Allow-Origin "*" env=IS_CORS
  22. </FilesMatch>
  23. </IfModule>
  24. </IfModule>
  25. # Allow access to web fonts from all domains.
  26. <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
  27. <IfModule mod_headers.c>
  28. Header set Access-Control-Allow-Origin "*"
  29. </IfModule>
  30. </FilesMatch>
  31. <IfModule mod_alias.c>
  32. <FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$">
  33. <IfModule mod_headers.c>
  34. Header set X-Powered-By "WP Rocket/3.4.4"
  35. Header unset Pragma
  36. Header append Cache-Control "public"
  37. Header unset Last-Modified
  38. </IfModule>
  39. </FilesMatch>
  40. <FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
  41. <IfModule mod_headers.c>
  42. Header unset Pragma
  43. Header append Cache-Control "public"
  44. </IfModule>
  45. </FilesMatch>
  46. </IfModule>
  47. # Expires headers (for better cache control)
  48. <IfModule mod_expires.c>
  49. ExpiresActive on
  50. # Perhaps better to whitelist expires rules? Perhaps.
  51. ExpiresDefault "access plus 1 month"
  52. # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
  53. ExpiresByType text/cache-manifest "access plus 0 seconds"
  54. # Your document html
  55. ExpiresByType text/html "access plus 0 seconds"
  56. # Data
  57. ExpiresByType text/xml "access plus 0 seconds"
  58. ExpiresByType application/xml "access plus 0 seconds"
  59. ExpiresByType application/json "access plus 0 seconds"
  60. # Feed
  61. ExpiresByType application/rss+xml "access plus 1 hour"
  62. ExpiresByType application/atom+xml "access plus 1 hour"
  63. # Favicon (cannot be renamed)
  64. ExpiresByType image/x-icon "access plus 1 week"
  65. # Media: images, video, audio
  66. ExpiresByType image/gif "access plus 4 months"
  67. ExpiresByType image/png "access plus 4 months"
  68. ExpiresByType image/jpeg "access plus 4 months"
  69. ExpiresByType image/webp "access plus 4 months"
  70. ExpiresByType video/ogg "access plus 1 month"
  71. ExpiresByType audio/ogg "access plus 1 month"
  72. ExpiresByType video/mp4 "access plus 1 month"
  73. ExpiresByType video/webm "access plus 1 month"
  74. # HTC files (css3pie)
  75. ExpiresByType text/x-component "access plus 1 month"
  76. # Webfonts
  77. ExpiresByType font/ttf "access plus 4 months"
  78. ExpiresByType font/otf "access plus 4 months"
  79. ExpiresByType font/woff "access plus 4 months"
  80. ExpiresByType font/woff2 "access plus 4 months"
  81. ExpiresByType image/svg+xml "access plus 1 month"
  82. ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
  83. # CSS and JavaScript
  84. ExpiresByType text/css "access plus 1 year"
  85. ExpiresByType application/javascript "access plus 1 year"
  86. </IfModule>
  87. # Gzip compression
  88. <IfModule mod_deflate.c>
  89. # Active compression
  90. SetOutputFilter DEFLATE
  91. # Force deflate for mangled headers
  92. <IfModule mod_setenvif.c>
  93. <IfModule mod_headers.c>
  94. SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
  95. RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
  96. # Don’t compress images and other uncompressible content
  97. SetEnvIfNoCase Request_URI \
  98. \.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
  99. </IfModule>
  100. </IfModule>
  101. # Compress all output labeled with one of the following MIME-types
  102. <IfModule mod_filter.c>
  103. AddOutputFilterByType DEFLATE application/atom+xml \
  104. application/javascript \
  105. application/json \
  106. application/rss+xml \
  107. application/vnd.ms-fontobject \
  108. application/x-font-ttf \
  109. application/xhtml+xml \
  110. application/xml \
  111. font/opentype \
  112. image/svg+xml \
  113. image/x-icon \
  114. text/css \
  115. text/html \
  116. text/plain \
  117. text/x-component \
  118. text/xml
  119. </IfModule>
  120. <IfModule mod_headers.c>
  121. Header append Vary: Accept-Encoding
  122. </IfModule>
  123. </IfModule>
  124. # END WP Rocket
  125. # BEGIN WordPress
  126. RewriteEngine On
  127. RewriteBase /
  128. RewriteRule ^index\.php$ - [L]
  129. # add a trailing slash to /wp-admin
  130. RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  131. RewriteCond %{REQUEST_FILENAME} -f [OR]
  132. RewriteCond %{REQUEST_FILENAME} -d
  133. RewriteRule ^ - [L]
  134. RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
  135. RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  136. RewriteRule . index.php [L]
  137. # END WordPress
  138. # Wordfence WAF
  139. <Files ".user.ini">
  140. <IfModule mod_authz_core.c>
  141. Require all denied
  142. </IfModule>
  143. <IfModule !mod_authz_core.c>
  144. Order deny,allow
  145. Deny from all
  146. </IfModule>
  147. </Files>
  148. # END Wordfence WAF
  149. # Proteger el archivo .htaccess
  150. <files .htaccess>
  151. Order Allow,Deny
  152. Deny from all
  153. </files>
  154. # Proteger el archivo wp-config.php
  155. <files wp-config.php>
  156. Order Allow,Deny
  157. Deny from all
  158. </files>
  159. # Proteger la navegación de carpetas
  160. Options All -Indexes
  161. # Block wp-includes folder and files
  162. <IfModule mod_rewrite.c>
  163. RewriteEngine On
  164. RewriteBase /
  165. RewriteRule ^wp-admin/includes/ - [F,L]
  166. RewriteRule !^wp-includes/ - [S=3]
  167. RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
  168. RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
  169. RewriteRule ^wp-includes/theme-compat/ - [F,L]
  170. </IfModule>
  171. # Proteger el archivo .htaccess
  172. <files .htaccess>
  173. Order Allow,Deny
  174. Deny from all
  175. </files>
  176. # Proteger el archivo wp-config.php
  177. <files wp-config.php>
  178. Order Allow,Deny
  179. Deny from all
  180. </files>
  181. # Proteger la navegación de carpetas
  182. Options All -Indexes

 

y este es el de la carpeta Uploads 

 

  1. # Bloquear la navegación de la carpeta de Uploads y dar seguridad de subida de archivos
  2. <Files ~ ".*\..*">
  3. Order Allow,Deny
  4. Deny from all
  5. </Files>
  6. <FilesMatch "\.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls|numbers|odt|pages|key|zip|rar)$">
  7. Order Deny,Allow
  8. Allow from all
  9. </FilesMatch>
ResponderCitar
Respondido : 20/04/2020 2:23 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Elimina mejor el código que agregaste en .htaccess y evalúa usar un plugin de protección para los archivos media.

Revisa por ejemplo:
https://wordpress.org/plugins/prevent-direct-access/

Saludos.

ResponderCitar
Respondido : 20/04/2020 6:24 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación