Muchas veces, cuando hacemos una página web tenemos una parte publica y otra parte privada. El acceso a la parte privada normalmente requiere de autenticación con usuario/contraseña, la cual solemos hacer mediante programación de la web con PHP, ASP.NET, o el lenguaje que estemos usando.
Pero… ¿y si queremos proteger una carpeta entera? Por ejemplo, tenemos una serie de paginas en un directorio “admin”, y queremos proteger las webs de administración para que sólo el “admin” tenga acceso.
Tenemos dos formas de hacerlo: programando por código que cuando se accede a esas paginas el usuario esté logueado o bien mediante autenticación en el propio servidor.
En esta entrada vamos a ver como se hace mediante autenticación en el servidor.
Con dos simples pasos, podemos crear una contraseña con un servidor Apache XAMPP instalado en Windows.
1. Crear un fichero de passwords
htpasswd –c [dir_destino] [username]
Por ejemplo, para el usuario “admin” haremos lo siguiente:
El servidor almacenará la contraseña en MD5 en el fichero especificado. La opción “-c” es para crear el fichero en caso de que no exista. Una vez creado, se puede omitir este parámetro.
2. Creamos un fichero con nombre “.htaccess”
Dentro de este fichero escribimos lo siguiente:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile "C:\xampp\apache\conf\passwords"
Require user admin
Y copiamos el fichero en la carpeta que queremos proteger.
Ahora, cada vez que se intente acceder a una de las paginas contenidas dentro de ese directorio, aparecerá una ventana para introducir usuario y contraseña. El usuario debe ser “admin” y las contraseña aquella que hemos creado anteriormente.
Puede ser un poco raro autenticarte de esta manera, pero puede ser útil si las funciones protegidas las va a usar un solo usuario, y lo que buscas es tener un control de usuarios rápido, y concreto para paginas muy especificas.