Proteger archivos sensibles de PrestaShop con contraseña (htaccess)
¿Por qué proteger archivos sensibles de PrestaShop?
Cuando gestionas una tienda online con PrestaShop, no solo vendes productos: también almacenas datos de clientes, contraseñas cifradas, configuraciones de pago y archivos de logs que pueden revelar información crítica. Un acceso no autorizado a estos archivos puede comprometer la seguridad de toda tu tienda y la confianza de tus clientes.
La buena noticia es que proteger archivos sensibles con contraseña es más sencillo de lo que parece. Gracias al archivo .htaccess (que ya usa PrestaShop para reescrituras de URL), puedes añadir una capa extra de autenticación sin necesidad de ser un experto en servidores.
En esta guía aprenderás paso a paso cómo proteger directorios y archivos clave de tu instalación, qué archivos son los más vulnerables y cómo configurarlo todo de forma segura, incluso si nunca has tocado un archivo de configuración.
¿Qué es exactamente el archivo .htaccess de PrestaShop?
El archivo .htaccess es un archivo de configuración que Apache (el servidor web más usado) lee para aplicar reglas en el directorio donde se encuentra. PrestaShop ya genera uno automáticamente en la raíz de tu instalación para gestionar URLs amigables, redirecciones y cabeceras de seguridad.
Pero este archivo no solo sirve para SEO o redirecciones: también puedes usarlo para proteger con contraseña carpetas concretas o archivos individuales. Añadir reglas de autenticación es una práctica recomendada por expertos en seguridad prestashop, especialmente en entornos de producción.
Archivos y carpetas que deberías proteger sí o sí
No todos los archivos necesitan la misma protección. Estos son los más críticos:
/config/: contienesettings.inc.phpcon credenciales de la base de datos./app/config/: parámetros de conexión y configuración avanzada./var/logs/: logs de errores que pueden filtrar rutas internas o datos de sesión./admin/(o el nombre que le hayas dado a tu panel): aunque ya tiene login, una doble capa no hace daño./download/: si vendes archivos digitales, evita que se acceda directamente por URL./upload/: a veces contiene archivos subidos por clientes, que podrían ser maliciosos./cache/: aunque no es crítico, los archivos compilados pueden revelar estructura interna.
Antes de empezar: prepara tu servidor
Proteger archivos con .htaccess requiere dos cosas:
- Que Apache tenga activado el módulo
mod_auth_basic(lo normal en cualquier hosting). - Que puedas crear un archivo
.htpasswd(donde se guardan las contraseñas cifradas).
[INFO] Si tu hosting usa Nginx en lugar de Apache, este método no funcionará directamente. Necesitarías configuración a nivel de servidor. Consulta con tu proveedor de hosting.
Cómo crear el archivo .htpasswd
El archivo .htpasswd contiene las credenciales en formato usuario:hash. Para generarlo puedes usar herramientas online o el siguiente comando SSH:
htpasswd -c /ruta/absoluta/.htpasswd usuario_elegido
Te pedirá una contraseña dos veces y creará el archivo. Si no tienes acceso SSH, puedes usar generadores online como https://www.htaccesstools.com/htpasswd-generator/.
[WARNING] Guarda el archivo .htpasswd fuera de la carpeta pública de tu web (por ejemplo, en /home/usuario/.htpasswd). Si lo dejas dentro de public_html, podrían descargarlo directamente.
Método 1: Proteger un directorio completo con contraseña
Este es el método más común y útil. Se aplica cuando quieres que toda la carpeta (y sus subcarpetas) requiera autenticación.
Paso 1: Accede al directorio que quieres proteger
Usa un cliente FTP (como FileZilla) o el administrador de archivos de tu hosting. Vamos a proteger, por ejemplo, la carpeta /var/logs/.
Paso 2: Crea o edita el archivo .htaccess dentro de esa carpeta
Dentro de /var/logs/, crea un archivo llamado .htaccess (si no existe) y añade:
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /home/usuario/.htpasswd
Require valid-user
Paso 3: Sube el archivo y prueba
Guarda los cambios y accede a tudominio.com/var/logs/. Debería aparecer un cuadro de diálogo pidiendo usuario y contraseña.
[TIP] La ruta en AuthUserFile debe ser absoluta, no relativa. Si no sabes cuál es, crea un archivo test.php en la raíz con <?php echo __DIR__; ?> y así la obtienes.
Método 2: Proteger archivos individuales con .htaccess
A veces no quieres bloquear toda una carpeta, solo un archivo concreto. Por ejemplo, config/settings.inc.php.
Crear un bloque condicional en el .htaccess raíz
En el .htaccess que está en la raíz de PrestaShop, añade al final:
<Files "settings.inc.php">
AuthType Basic
AuthName "Archivo protegido"
AuthUserFile /home/usuario/.htpasswd
Require valid-user
</Files>
Proteger varios archivos a la vez
Puedes agrupar varios archivos con una expresión regular:
<FilesMatch "\.(log|ini|env|yml)$">
AuthType Basic
AuthName "Área restringida"
AuthUserFile /home/usuario/.htpasswd
Require valid-user
</FilesMatch>
Esto protegería todos los archivos con esas extensiones dentro de esa carpeta y subcarpetas.
Método 3: Doble protección para el panel de administración
Tu panel de administración de PrestaShop ya tiene su propio login, pero añadir una capa extra con .htaccess puede evitar ataques de fuerza bruta.
Localiza la carpeta admin
PrestaShop suele renombrar la carpeta /admin/ a algo como /admin12345/. Busca en tu instalación cuál es la actual.
Aplica la protección de directorio
Dentro de esa carpeta, crea .htaccess con:
AuthType Basic
AuthName "Zona privada"
AuthUserFile /home/usuario/.htpasswd
Require valid-user
Consideración importante
Cuando proteges el admin, tendrás que meter la contraseña dos veces: una por el .htaccess y otra por el login de PrestaShop. Es molesto, pero muy seguro.
Cómo generar contraseñas seguras para .htpasswd
No uses contraseñas simples como "admin123". Para proteger archivos sensibles de PrestaShop, la contraseña debe ser robusta.
Características de una contraseña segura
- Mínimo 12 caracteres.
- Mezcla de mayúsculas, minúsculas, números y símbolos.
- Evita palabras comunes o fechas de nacimiento.
- No la reutilices en otros servicios.
Ejemplo de contraseña generada
&7Kp#3vL!9qZ@2sW
Puedes usar un gestor de contraseñas para generarlas y guardarlas de forma segura.
Casos especiales: WooCommerce vs PrestaShop
Si alguna vez has usado WooCommerce, sabrás que la estructura es diferente. En PrestaShop, los archivos sensibles están más distribuidos. Mientras que en WooCommerce sueles proteger wp-config.php, en PrestaShop debes proteger varios archivos de configuración.
| Plataforma | Archivos a proteger |
|---|---|
| PrestaShop | /config/settings.inc.php, /app/config/parameters.php |
| WooCommerce | wp-config.php, /wp-admin/ |
[INFO] Esta guía se centra en PrestaShop, pero los mismos principios aplican a cualquier CMS.
Errores comunes al configurar .htaccess en PrestaShop
Error 500: Internal Server Error
Suele deberse a una ruta incorrecta en AuthUserFile o a permisos inadecuados del archivo .htpasswd.
Solución: Verifica que la ruta sea absoluta y que el archivo .htpasswd tenga permisos 644.
Error: "No permission to access /" en el directorio raíz
Si has protegido accidentalmente la raíz, toda tu tienda pedirá contraseña. Revisa el .htaccess de la raíz y elimina cualquier bloque de autenticación.
El acceso sigue permitido sin contraseña
Esto ocurre si el servidor no está leyendo el .htaccess. Comprueba que Apache tenga AllowOverride All en la configuración del vhost.
Protección adicional: ocultar archivos sensibles por defecto
Además de la contraseña, puedes añadir reglas para denegar el acceso a archivos que nunca deberían ser accesibles desde el navegador.
Bloquear archivos de configuración por defecto
En el .htaccess raíz, añade:
<FilesMatch "\.(inc|sql|tpl|log|ini|env|sh|bak)$">
Require all denied
</FilesMatch>
Bloquear acceso a directorios ocultos
RedirectMatch 403 ^/\.(?!well-known).*
Esto bloquea cualquier acceso a carpetas que empiecen por punto (como .git o .env).
Cómo probar que la protección funciona correctamente
Después de configurar todo, debes verificar que funciona:
- Abre una ventana de incógnito en tu navegador.
- Accede a la URL protegida (por ejemplo,
tudominio.com/var/logs/). - Debe aparecer un mensaje de "Autenticación requerida".
- Introduce las credenciales y verifica que el acceso es correcto.
[WARNING] No hagas las pruebas en tu navegador habitual, ya que las credenciales pueden estar cacheadas y no verás el cuadro de diálogo.
Resumen y buenas prácticas finales
Proteger archivos sensibles con prestashop htaccess es una de las medidas más efectivas para reforzar la seguridad de tu tienda. No sustituye a otras medidas (como mantener PrestaShop actualizado o usar certificados SSL), pero añade una barrera extra muy valiosa.
Checklist rápida de seguridad
- Cambia la carpeta
/admin/por defecto. - Protege
/config/,/var/logs/y/app/con contraseña. - Genera contraseñas robustas para el
.htpasswd. - Guarda el
.htpasswdfuera del directorio público. - Bloquea el acceso a archivos con extensiones peligrosas.
- Realiza pruebas periódicas de acceso.
Si tu hosting utiliza Syspanel (antes HestiaCP), recuerda que el acceso a la gestión del servidor se realiza a través del puerto 2106. Desde allí podrás gestionar archivos, permisos y reiniciar Apache si es necesario.
Preguntas frecuentes (FAQ)
¿Qué pasa si olvido la contraseña del .htaccess?
Deberás editar el archivo .htpasswd y generar un nuevo hash para tu usuario. Si no puedes acceder por FTP, usa el administrador de archivos de Syspanel.
¿Puedo proteger solo una subcarpeta de /var/logs/?
Sí, simplemente coloca un .htaccess dentro de esa subcarpeta específica. Las reglas se aplican solo a ese directorio y sus hijos.
¿Afecta la protección al rendimiento de mi tienda?
El impacto es mínimo. Solo se añade una comprobación de autenticación cuando se solicita un archivo protegido. No afecta a las páginas públicas.
¿Debo proteger también el directorio /img/ o /themes/?
No es necesario. Esos directorios contienen contenido público (imágenes, CSS, JS) que debe ser accesible para que la tienda se visualice correctamente. Protegerlos rompería tu web.
¿Qué hago si mi hosting usa Nginx?
Nginx no utiliza .htaccess. Deberás configurar la autenticación a nivel de servidor usando bloques location y archivos .htpasswd. En Syspanel, puedes editar la configuración del sitio desde el panel, aunque necesitarás conocimientos más avanzados.
Con estas instrucciones ya puedes aplicar una capa de protección efectiva a tu PrestaShop. Recuerda que la seguridad es un proceso continuo: revisa periódicamente qué archivos son accesibles y mantén actualizado tu sistema. Proteger archivos con contraseña es un gran primer paso, pero no el único.
