CÓMO proteger el acceso a directorios web con .htaccess

Vamos a explicar en varios sencillos pasos cómo proteger el acceso a directorios web con .htaccess, de modo que podamos crear áreas de trabajo y acceso solamente para las personas que queramos.

1. Creando el archivo .htaccess
Para proteger el acceso a determinados directorios usando .htaccess, es necesario tener en dicho directorio un archivo .htaccess con al menos cuatro líneas:

AuthName «Introduce tu usuario/contraseña»
AuthType Basic
AuthUserFile /.htpasswd
require valid-user

El bloqueo afectará a ese directorio y a todos sus subdirectorios, de modo que si lo ponéis en el directorio raiz afectará a toda la web.

¿Qué significa cada una de esas líneas?

  • AuthName: es el texto que aparecerá en la ventana de «login», y lo podéis cambiar.
  • AuthType: Sólo es posible el módo Basic, se están desarrollando métodos más seguros pero de momento no funcionan bien.
  • AuthUserFile: Es el archivo que contiene las contraseñas, le puedes poner el nombre que quieras pero manteniendo ese nombre te aseguras que nadie verá su contenido (algo realmente importante pues ese fichero almacena las claves cifradas, pero es cifrado de una clave susceptible de ser atacado por fuerza bruta.
  • require: Esta línea sirve para definir qué usuarios tienen acceso, dejando «valid-user» cualquier usuario que introduzca su clave correcta tiene permiso.

2. Creando el archivo .htpasswd

Ya hemos mencionado antes que necesitamos un archivo .htpasswd. Este archivo consiste en una serie de líneas, cada una contiene un nombre de usuario y su contraseña separados por el símbolo «:». Las contraseñas, como ya hemos mencionado, no están en texto claro, sino cifradas. Para cifrar la contraseña en la consola de comandos puedes escribir

~$ htpasswd <fichero> <usuario>

Y te preguntará la contraseña en una nueva línea. La escribes y el resultado será algo parecido a:

usuario1:WrU808BHQai36
usuario2:iABCQFQs40E8M
usuario3:FAdHN3W753sSU

Para hacer login, el usuario introduce las contraseñas en forma «normal», no en este formato cifrado (¡claro!).

Permitiendo acceso a grupos de usuarios
Si queremos restringir varios directorios pero no todos van a ser utilizados por las mismas personas nos interesará agrupar los usuarios en grupos y definir en el htaccess qué grupo puede ver qué directorio. Eso lo hacemos modificando la línea require del archivo .htaccess, en lugar de poner lo explicado en el primer punto vamos a poner:

require group amigos
AuthGroupFile /misgrupos

El archivo «misgrupos» (en este ejemplo está en el mismo directorio que .htaccess y .htpasswd) está formado por líneas de este tipo:

grupo1:usuario1 usuario2
grupo2:usuario2 usuario3
grupo3:usuario1 usuario3

Con .htaccess se pueden llevar a cabo multitud de acciones mucho más complejas que éstas, desde crear redirecciones hasta evitar el acceso a ficheros concretos, pero no es el fin de este cómo explicar todo eso, sino simplemente ayudar a proteger directorios en nuestros sitios web.

Jose Alcántara
Resolviendo problemas mediante ciencia, software y tecnología. Hice un doctorado especializado en desarrollo de hardware para análisis químico. Especialista en desarrollo agile de software. Más sobre Jose Alcántara.

3 comentarios

  1. En el asunto no llegó a entrar, pero mi pregunta básicamente está relacionada con saber, qué pasa cuando ya tengo un .htaccess en la raíz del directorio, pero el directorio que yo quiero proteger es otro diferente. ¿Hay alguna forma de indicarle al .htaccess que el directorio a proteger es otro diferente? Muchas gracias por las sugerencias y respuestas!

Los comentarios están cerrados.

Este blog usa cookies para su funcionamiento.    Más información
Privacidad