Si queremos implementar un directorio específico en nuestro sitio que sea accesible únicamente para personas de nuestra confianza, el archivo .htaccess nos puede brindar una solución, la cual dicho sea de paso, también nos puede ayudar a solucionar algunos problemas de seguridad que puede tener nuestro sitio.

Existen numerosos métodos para proteger con clave diversas áreas de nuestro sitio, por ejemplo con algunos lenguajes basados en el servidor (como ASP, PHP o PERL) o con JavaScript. JavaScript no es tan seguro o a prueba de tontos como una opción basada en el servidor, ya que una respuesta por parte del servidor siempre es más segura que una respuesta dependiente del cliente. En este caso, htaccess puede proporcionar un nivel de seguridad que resulta más que suficiente para las necesidades del usuario promedio, aunque hay formas que van más allá incluso de las posibilidades que brinda htaccess. Si un usuario no está confortable únicamente con htaccess, puede proteger sus páginas mediante contraseña en una variedad de formas.

Lo primero que se necesita es crear un archivo llamado .htpasswd. Pueden haber problemas con la convención de nomenclatura, pero es la misma idea detrás de nombrar el mismo archivo htaccess, y en este punto el usuario ya debe ser capaz de hacerlo por sí mismo. En el archivo .htpasswd, colocamos el nombre de usuario y la contraseña (la cual está encriptada) para aquellos que deseamos que tengan acceso.

Por ejemplo, un nombre de usuario y una contraseña de wsabstract (por supuesto que no recomendable que el nombre de usuario y la contraseña sean los mismos), el archivo htpasswd se vería de la siguiente manera:

wsabstract:y4E7Ep8e7EYV

Podemos notar que el nombre de usuario va primero seguido por la contraseña. Hay una herramienta muy útil que permite encriptar la contraseña en la codificación correcta para su uso en el archivo httpasswd. Por seguridad, no debemos subir el archivo a un directorio que sea accesible mediante la web (misitio.com/.htpasswd), mas bien debe ser colocado arriba del directorio raíz www. Posteriormente será necesario especificar la localización del archivo, por lo que debemos recordar donde lo pusimos. Asimismo, este archivo, al igual que con el htaccess, debe subirse como ASCII y no en forma binaria.

Seguidamente creamos un nuevo archivo htaccess y colocamos el siguiente código:

AuthUserFile /usr/local/you/safedir/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic

require user wsabstract

La primera línea es la ruta completa en el servidor hacia el archivo htpasswd. Si tenemos scripts instalados en el servidor, probablemente estaremos familiarizados con esto. Es importante notar que no es una URL, es una ruta en el servidor. También hay que considerar que si se coloca este archivo htaccess en el directorio raíz, protegerá con contraseña todo el sitio, lo que seguramente no es el objetivo.

La línea require user es donde colocamos el nombre de usuario para aquellos que queremos que tengan acceso a esa parte del sitio. Al hacer uso de ese código permitimos que solo un usuario específico sea capaz de acceder al directorio. Esto aplica si tenemos un archivo htpasswd que tenga múltiples usuarios incluidos que queremos que tengan acceso a un directorio individual. Si queremos que la lista entera de usuarios tengan acceso al directorio, debemos reemplazar require user xxx con require valid-user.

El AuthName es el nombre del área a la que queremos acceder. Puede ser cualquier cosa, como «EnterPassword». Se usa el AuthType Basic debido a que estamos usando autenticación HTTP básica.