- ¿Qué es un archivo .htaccess?
- ¿Qué es un archivo .htpasswd?
- ¿Dónde debe guardarse el archivo .htpasswd?
- Protección con contraseña mediante .htaccess – Ejemplo
- ¿Se pueden proteger solo subcarpetas?
- Protección con contraseña para dominios o subdominios concretos
- ¿Con qué servidores web funciona?
- Ventajas y desventajas de la protección mediante .htaccess
- ¿Qué seguridad ofrece la protección con contraseña?
- ¿Qué alternativas existen?
- Lista blanca de direcciones IP
- Plugin de modo de mantenimiento
- Autenticación en el servidor (Nginx)
- Protección con contraseña desde el panel de alojamiento
- Restricción de acceso mediante passkey o token
Cómo activar un modo de mantenimiento seguro y limitar el acceso a determinados usuarios
Cuando desarrollas una web, revisas contenidos o quieres enseñar una página nueva a un cliente antes de publicarla, no debería estar disponible para todos los visitantes. Una solución sencilla y muy extendida es protegerla con contraseña mediante .htaccess y .htpasswd. Esta protección funciona en el servidor e impide que los visitantes sin credenciales vean el contenido de la web.
En este artículo explico paso a paso cómo funciona la protección con contraseña, cuándo resulta útil, cuáles son sus ventajas y desventajas y qué alternativas existen. Al terminar podrás proteger de forma segura y correcta toda la web o determinadas subcarpetas mediante .htaccess.
¿Qué es un archivo .htaccess?
El archivo .htaccess es un archivo de configuración utilizado principalmente por servidores web como Apache y LiteSpeed. Se encuentra en la carpeta de la web y permite aplicar ajustes en el servidor sin modificar su configuración principal.
Funciones habituales del archivo .htaccess:
- Activar la protección con contraseña
- Crear redirecciones y reglas de reescritura
- Configurar el almacenamiento en caché
- Definir páginas de error
- Permitir o bloquear el acceso desde determinadas direcciones IP
El archivo .htaccess es ideal para proteger con contraseña porque se configura rápidamente y no requiere modificar directamente el servidor.
¿Qué es un archivo .htpasswd?
El archivo .htpasswd contiene usuarios y contraseñas cifradas que el servidor web utiliza para la autenticación. Se guarda por separado, normalmente fuera del directorio web público, para que no pueda consultarse desde el exterior.
Ejemplo:
user:secret
#beispiel: test:test123242345
test: $apr1$547x6czg$ZOB.RvFfT2JdN1KfOvuUF0
Importante:
Las contraseñas se guardan cifradas. Los formatos de Apache con MD5, SHA o bcrypt son los más habituales. Nunca deben almacenarse contraseñas sin cifrar.
Puedes generar las contraseñas mediante:
- generadores de htpasswd
- Consola de Linux:
htpasswd -nb usuario contraseña - herramientas en línea con SSL, solo para pruebas
¿Dónde debe guardarse el archivo .htpasswd?
El archivo .htpasswd debe estar siempre fuera de la raíz web pública, nunca en /public_html, /www ni /htdocs. Un ejemplo de ruta segura sería:
/home/username/secure/.htpasswd
O bien, en entornos de alojamiento:
/var/www/.secrets/htpasswd
La ruta debe elegirse de modo que no sea accesible desde el navegador.
Protección con contraseña mediante .htaccess – Ejemplo
La configuración básica tiene este aspecto:
AuthUserFile /home/benutzer/secure/.htpasswd
AuthGroupFile /dev/null
AuthName "Passwortgeschuetzter Bereich"
AuthType Basic
Require valid-user
En cuanto este archivo se encuentre en la carpeta deseada, dicha carpeta y todas sus subcarpetas quedarán protegidas.
¿Se pueden proteger solo subcarpetas?
Sí, es una práctica muy habitual. Si tienes una versión beta en la subcarpeta /vista-previa, crea allí un archivo .htaccess propio. El resto de la web seguirá siendo accesible.
Protección con contraseña para dominios o subdominios concretos
También funciona sin problemas. Cada dominio y subdominio puede utilizar sus propios archivos .htaccess. De este modo puedes proteger por completo un dominio de pruebas mientras el dominio principal permanece abierto.
Ejemplo de configuración según el dominio:
SetEnvIf Host my-domain.test passreq
AuthType Basic
AuthName "Password Required"
AuthUserFile /home/user1234/meinewebsite/htpwd/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any
Así puedes decidir en función del nombre de dominio si se necesita una contraseña.
¿Con qué servidores web funciona?
El método .htaccess funciona con:
- Apache
- LiteSpeed
- OpenLiteSpeed, con algunas limitaciones
.htaccess no es compatible con:
- Nginx
- IIS (Microsoft)
En Nginx, la protección con contraseña debe configurarse en la configuración del servidor y no mediante .htaccess.
Ventajas y desventajas de la protección mediante .htaccess
| Ventaja | Desventaja |
|---|---|
| Muy fácil de configurar | No funciona con Nginx sin acceso a la configuración del servidor |
| No necesita plugins ni programas | La ventana de inicio de sesión no se puede personalizar |
| Protección en el servidor | Basic Auth envía el nombre de usuario y la contraseña codificados, pero no cifrados |
| Ideal para un modo de mantenimiento o una vista previa protegida | No es seguro sin HTTPS |
| Funciona para webs completas o carpetas concretas | Puede ralentizar los sistemas de caché |
Importante:
Utiliza siempre HTTPS para que las credenciales se transmitan cifradas.
¿Qué seguridad ofrece la protección con contraseña?
Cuando está bien configurada, Basic Auth ofrece una seguridad adecuada para páginas de vista previa, herramientas internas o entornos de desarrollo. Sin embargo, no sustituye a un sistema de inicio de sesión complejo para áreas de miembros o aplicaciones web.
Recomendaciones para obtener la máxima seguridad:
- Activar HTTPS
- Generar las contraseñas con bcrypt
- Guardar el archivo .htpasswd fuera del directorio web
- Utilizar además una lista blanca de IP, si es necesario
¿Qué alternativas existen?
Lista blanca de direcciones IP
Permitir el acceso únicamente desde determinadas direcciones IP:
Order deny,allow
Deny from all
Allow from 123.123.123.123
Plugin de modo de mantenimiento
Para WordPress, Joomla, Shopware y otros CMS existen plugins que muestran un modo de mantenimiento con una plantilla propia.
Autenticación en el servidor (Nginx)
En Nginx, la autenticación se define en server.conf.
Protección con contraseña desde el panel de alojamiento
Plesk y cPanel ofrecen funciones propias para proteger directorios con contraseña.
Restricción de acceso mediante passkey o token
Los entornos de desarrollo modernos pueden utilizar enlaces con token en lugar de solicitar una contraseña.
Este artículo ha sido traducido con ayuda de IA.