Proteger tu página web con contraseña

Desarrollo, Mantenimiento web

Si quieres tener una web publicada con contenido privado, puedes proteger tu página web con contraseña, utilizando dos archivos: el .htaccess y el .htpasswd. Utilizaremos el primero de ellos para activar la validación para acceder al contenido privado e indicar dónde se guarda el segundo archivo, el archivo de contraseñas, que incluirá las credenciales válidas para acceder la parte privada de la web.

Proteger tu página web con contraseña al completo

Usaremos el archivo .htaccess para que tu página web sólo pueda ser accesible para una serie de usuarios que se tendrán que validar con la contraseña correspondiente. Para ello, basta añadir las siguientes líneas al archivo .htaccess de la web (si no lo tienes, crea uno nuevo y guárdalo en la carpeta raíz de tu web). Utiliza un editor de textos sencillo, como el Notepad (Windows) o el TextEdit (Mac):
AuthType Basic
AuthName "Texto a mostrar en la ventana."
AuthUserFile "/path/al/archivo/.htpasswd"
Require valid-user

Las líneas que debes adaptar a tu entorno es la segunda y la tercera.

  • AuthType indica el método que se usará para la autenticación del usuario.
  • Con AuthName indicaremos el texto que queremos que se muestre en la ventana diálogo que saltará para preguntar el usuario y contraseña
  • AuthUserFile especifica el path de la carpeta donde incluiremos el archivo .htpasswd con los usuarios válidos. Normalmente se recomienda guardarlo en una carpeta externa a la pública que contiene los archivos de la web, yo suelo crear una carpeta al mismo nivel que la carpeta public_html y dentro sitúo el archivo.
  • Con Require valid-user estamos especificando que los usuarios que podrán acceder al contenido privado serán aquellos incluidos en el archivo de contraseñas y que se validen correctamente.

Ahora necesitamos generar el archivo de contraseñas .htpasswd. Para ello, de nuevo, usaremos un editor de archivos sencillo, como el Notepad o TextEdit e incluiremos en él pares del tipo:
usuario1:contraseña
usuario2:contraseña
usuario3:contraseña

Cada par en una línea nueva. Es importante generar las contraseñas encriptadas, para que funcione la validación. Para ello, podemos utilizar distintos generadores de contraseñas que hay en internet, yo utilizo esta página, en la que puedes indicar los usuarios y contraseñas y generar el contenido que tendrá que ir en el archivo .htpasswd.

Proteger con contraseña archivos específicos

Si lo que queremos es proteger un archivo específico, habrá que especificar cuál es mediante la directiva File. Lo haremos incluyendo el código que puse anteriormente dentro de esa directiva, de la siguiente manera:
<Files private.php>
AuthType Basic
AuthName "Texto a mostrar en la ventana."
AuthUserFile "/path/al/archivo/.htpasswd"
require valid-user
</Files>

De esta forma, estamos protegiendo sólo el archivo private.php.

Si lo que queremos es proteger varios archivos, utilizaremos la directiva FilesMatch de la siguiente manera:
<FilesMatch"^(admin|private).php$">
AuthType Basic
AuthName "Texto a mostrar en la ventana."
AuthUserFile "/path/al/archivo/.htpasswd"
require valid-user
</FilesMatch>

Con este código protegeremos por contraseña los archivos admin.php y private.php.

Fuente: httpd.apache.org