Si necesitas proteger un directorio con usuario y contraseña, una de las opciones es utilizar archivos .htaccess y .htpasswd.
.htaccess tiene muchos usos, como por ejemplo redirigir nuestras páginas web, restringir el acceso a un directorio, etc. Puedes ver más ejemplos en Utilizar las rewrite rules en .htaccess
El archivo .htpasswd guardará los nombres de usuario y contraseñas de cada restricción. Es importante tener en cuenta que el archivo .htaccess creado para restringir el acceso se ha de ubicar dentro del directorio que a proteger.
.htacceess
AuthUserFile /var/www/vhosts/dominio.com/private/.htpasswd
AuthName DirectorioProtegido
AuthType Basic
require user UsuarioDominio
El .htaccess anterior es un claro ejemplo de restricción. Vamos a revisar paso por paso las diferentes opciones indicadas:
AuthUserFile /var/www/vhosts/dominio.com/private/.htpasswd
En este punto se tiene que indicar la ruta absoluta del servidor hacia el archivo .htpasswd, que, como hemos comentado antes, es donde guardaremos los datos de acceso de los usuarios. Este archivo no se debería ubicar nunca dentro de la carpeta pública del dominio ( normalmente /httpdocs o /public_html ), ya que sería un grave fallo de seguridad que la gente puediese averiguar los datos de acceso de los usuarios.
Si por alguna razón no fuera posible ubicar el archivo .htpasswd fuera del contenido público, recomendamos que por lo menos se modifique el nombre, como por ejemplo .89lasa12, ya que sería más complicado para posibles usuarios no deseados averiguar qué nombre posee el fichero.
AuthName DirectorioProtegido
Cuando intentes acceder mediante tu navegador al directorio protegido, aparecerá una ventana para introducir usuario y contraseña, y un aviso de que estamos intentando acceder. Esta opción es configurable, tan solo tienes que modificar DirectorioProtegido por lo que quieras que se muestre en el cuadro emergente. En esta línea puedes especificar cualquier cosa ya que no tiene ningún efecto práctico, únicamente estético a la hora de acceder.
AuthType Basic
Opción que indica que el tipo de autentificación es básico.
require user UsuarioDominio
En esta línea se indica que únicamente el usuario UsuarioDominio puede acceder al directorio.
En el caso que quieras añadir usuarios adicionales, siempre es posible añadirlos como en el siguiente ejemplo:
require user UsuarioDominio UsuarioDominio2
Hay multitud de opciones en lo que respecta al control de accesos, de los cuales podríamos destacar el poder proteger ficheros como en el siguiente ejemplo:
AuthUserFile /var/www/vhosts/dominio.com/private/.htaccess
AuthName DirectorioProtegido
AuthType Basic
<Files “ficheroaproteger.php”>
require user UsuarioDominio
<Files>
.htpasswd
El archivo .htpasswd es el que almacena los accesos de usuarios y contraseñas que quieras emplear para proteger los directorios o ficheros restringidos mediante el archivo .htaccess.
En los ejemplos siguientes nos referiremos a este fichero como .htpasswd, pero tal y como hemos indicado anteriormente, se le puede especificar el nombre que quieras.
Los datos se almacenan en el fichero .htpasswd con el formato usuario:contraseña y en diferentes líneas como por ejemplo:
UsuarioDominio:AQTm0UkcUgb1M
UsuarioDominio2:m1JcIlg0b23M
Como puedes ver, las contraseñas vienen encriptadas por defecto si se establece mediante el comando htpasswd por Apache. En el caso de disponer de un servidor Apache en el servidor, y accediendo mediante SSH, podrás ejecutar los comandos necesarios para añadir los usuarios al fichero .htpasswd.
Una vez dentro, podrás ejecutar el comando de diferentes maneras, por si quieres que cree automáticamente el fichero, o que muestre por pantalla la información y para después introducirla en el fichero .htpasswd:
htpasswd -nb UsuarioDominio contraseña
Esta línea mostrará por pantalla la cadena que debes agregar manualmente a tu archivo .htpasswd.
htpasswd -cb .htpasswd UsuarioDominio contraseña
Esta línea, escribirá directamente en el archivo indicado ( en este caso .htpasswd, pero puedes especificar cualquier otro ).
Añadido el usuario en el archivo .htpasswd y habiendo especificado lo indicado en el archivo .htaccess, ya debería ser suficiente para que el directorio o archivo esté protegido mediante usuario y contraseña.
En la documentación oficial de Apache, podrás encontrar información adicional sobre .htpasswd y .htaccess.