Tips

Autentificación web mediante .htaccess

¿Cuántas veces hemos tenido la imperiosa necesidad de restringir el acceso a nuestra web para efectuar labores de mantenimiento? Lo más normal en estos casos suele ser reemplazar el archivo index.html por otro que notifique a los visitantes de que la página se encuentra en obras.

Pero... ¿Cómo podemos comprobar si realmente las modificaciones que hagamos están teniendo el efecto deseado sobre nuestra web? Ante esta situación, os voy a dejar un tip muy útil que obligará a que el visitante introduzca un usuario y una contraseña al intentar acceder a la página. Para ello partiremos del famoso .htaccess y de un archivo que almacenará los datos de acceso .htpasswd.

En primer lugar, si no estás muy familiarizado con los términos anteriores te sugiero que le eches un vistazo a sus definiciones en Wikipedia:

Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache. (Wikipedia)

.htpasswd es un modelo de tabla usado para almacenar nombres de usuarios y contraseñas para una autentificación de acceso básica en un servidor HTTP Apache. El nombre del archivo se da en la configuración de .htaccess, y puede ser cualquiera si bien ".htpasswd" es el nombre canónico. El nombre del archivo comienza con un punto, porque la mayoría de los sistemas operativos tipo Unix-like consideran que cualquier archivo que comienza con el punto se oculta. Este archivo se mantiene a menudo con la consola de comandos "htpasswd" que puede agregar, eliminar y actualizar los usuarios, y codificará adecuadamente la contraseña para su uso (de manera que es fácil comprobarlo, pero no devuelve a la contraseña original). (Wikipedia)

De manera muy resumida, podemos decir que el archivo .htpasswd contendrá los datos de acceso, mientras que el .htaccess será el encargado de pedirlos para así poder navegar por la página. Ahora que ya dominamos la jerga, es turno de pasar a la acción.

Primero crearemos el archivo .htaccess con el siguiente contenido:

AuthType Basic
AuthName "Área protegida"
AuthUserFile /path/to/.htpasswd
Require valid-user

En la segunda línea podremos cambiar "Área protegida" por cualquier otro mensaje que deseemos mostrar, mientras que en la tercera línea (/path/to/.htpasswd) debemos escribir la ruta específica donde se encuentra alojado el archivo .htpasswd.

Para averiguar esta ruta podemos echar mano del siguiente código PHP:

<?php
$dir = dirname(__FILE__);
echo "<p>Ruta completa del archivo .htpasswd en este directorio: " . $dir . "/.htpasswd" . "</p>";
?>

Si guardamos el código anterior en un fichero PHP, lo subimos a nuestro servidor y lo ejecutamos, podremos observar qué es lo que debemos poner exactamente a continuación de AuthUserFile en la tercera línea.

Por último, ya solo nos queda completar el fichero .htpasswd. La estructura de este fichero contendrá el nombre de usuario que queramos en texto plano, separado por dos puntos (:) de la contraseña (debidamente encriptada).

¿Pero cómo encriptamos la contraseña para que sea válida?

Una alternativa es crear otro fichero PHP con el siguiente código y ejecutarlo en el servidor al igual que ya hicimos anteriormente para averiguar la ruta completa del archivo .htpasswd:

<?php
$plainPassword = 'una contraseña';
$hash = base64_encode(sha1($plainPassword, true));
$codificado = '' . $hash;
echo $codificado;
?>

Por supuesto en el código de arriba debemos cambiar "una contraseña" por la que deseemos utilizar. Tras ejecutar el código, se nos mostrará en pantalla la clave que hay que incluir en el archivo .htpasswd.

El archivo debe quedar más o menos así:

usuario:W6ph5Mm5Pz8GgiULbPgzG37mj9g=

¡Y eso es todo! Para acabar, subimos los ficheros .htaccess y .htpasswd al servidor y cuando tratemos de acceder a la página se nos mostrará una ventana solicitando la identificación.

Ojalá os haya sido útil el consejo.

Comentarios

Hola, soy el webmaster de TIC Las Palmas. ¿Quieres contactar conmigo? ¡Te ayudaré en lo que pueda!

Publicidad las 24 horas:
Si buscas promoción, una web es vital para obtener una mayor visibilidad.

Amplio alcance:
No existen barreras, accede al mercado internacional.

Fidelización:
Sus visitantes obtendrán feedback directo de usted o de su empresa.

Clientes potenciales:
Atraiga clientes que de otra manera no hubiesen encontrado sus servicios.

Valor añadido:
Agregue servicios adicionales a su negocio.

Ahorro:
Acabe con los gastos de promoción externa.

Formulario de consulta