¿Cómo protejo mi sitio con una contraseña?

Usar el panel para proteger tu sitio con una contraseña

La forma más fácil de proteger tu sitio con una contraseña es usar la herramienta en el panel DreamHost. Navega hasta la página Htaccess/WebDAV. Desde ahí puedes configurar la protección con contraseña. Si prefieres crearlo manualmente usando SSH, revisa las siguientes secciones.

Crear un archivo .htaccess en tu servidor web de DreamHost

Consulta el siguiente artículo para obtener instrucciones sobre cómo crear un archivo .htaccess en su servidor web:

Para crear el archivo, debes usar la opción SSH.

Protege tu sitio con una contraseña

Crear el archivo .htpasswd

Puedes usar un archivo .htaccess para proteger con una contraseña un archivo o carpeta mediante la autenticación básica.

  1. Crea un archivo .htpasswd en el directorio que deseas proteger con una contraseña, utilizando la utilidad htpasswd. Para el primer usuario, digamosle user1, ejecuta el siguiente comando:
    [server]$ htpasswd -c /home/username/example.com/.htpasswd user1
  2. Ingresa la contraseña para el usuario. Esto crea una contraseña para un usuario llamado 'user1'. El código en su archivo .htpasswd mostrará la contraseña cifrada de esta manera:
    user1:$apr1$bkS4zPQl$SyGLA9oP75L5uM5GHpe9A2
  3. Ejecútalo nuevamente (sin la opción -c) para cualquier otro usuario al que desees permitir el acceso a tu directorio.
  4. Configura los permisos en este archivo en 644.
    [server]$ chmod 644 .htpasswd

Revisa la siguiente página para más información:

Crear el archivo .htaccess

A continuación,  crea un archivo .htaccess usando el comando nano:

[server]$ nano .htaccess

Ejemplos de código para agregar al archivo .htaccess

Esta ejemplo de contraseña protege un directorio completo del sitio web. Asegúrate de cambiar las líneas en negrita a la ruta real de tu archivo cuando lo reemplaces por el nombre de tu usuario y nombre de tu dominio.

#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/username/example.com/.htpasswd
Require valid-user

Este ejemplo de contraseña protege un solo archivo:

#Protect single file
<Files admin.php>
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/username/example.com/.htpasswd
Require valid-user
</Files>

Este ejemplo protege varios archivos:

#Protect multiple files
<FilesMatch "^(admin|staff).php$">
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/username/example.com/.htpasswd
Require valid-user
</FilesMatch>

Forzar SSL (HTTPS) en la solicitud de inicio de sesión

De manera predeterminada, la solicitud de inicio de sesión que ves no está encriptada. Esto significa que tu contraseña se enviará como texto sin formato a través de http. Para cifrar este inicio de sesión, debes agregar un certificado SSL a tu dominio. Una vez agregues el certificado SSL, agrega el código a continuación para forzar SSL al iniciar sesión.

Este método evita el envío de una solicitud de contraseña .htaccess en una conexión no cifrada. Si deseas asegurarte de que tu servidor sólo sirve documentos a través de un canal SSL encriptado, entonces debes usar la directiva SSLRequireSSL con la opción + StrictRequire habilitada:

Paso 1 — Agregar código a tu archivo .htaccess

Asegúrate de que la URL que ingreses junto a SSLRequire sea la URL base de tu sitio. No incluyas 'www' delante de la URL si estás forzando a eliminar 'www' en tu panel.

Si está asegurando un subdirectorio como 'example.com/blog', esta URL seguirá siendo 'example.com'.

Además, puedes usar cualquier archivo que desees para el documento 403. A continuación se muestra como 'error_redirect.php'. Cambia esto a tu archivo elegido.

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "example.com"
ErrorDocument 403 /error_redirect.php <Files /error_redirect.php> AuthType none </Files>

Si solo estás protegiendo un subdirectorio

Si solo deseas proteger un solo subdirectorio y no todo el sitio, especifica el subdirectorio en tu archivo .htaccess como se muestra en el siguiente código:

#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/example_username/example.com/blog/.htpasswd
Require valid-user

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.example.com"

ErrorDocument 403 /blog/error_redirect.php

<Files /error_redirect.php>
  AuthType none
</Files>

Si tu sitio está en un servidor que ejecuta Ubuntu 14 (Trusty), asegúrate de cambiar la línea ErrorDocument a la ruta URL completa. Por ejemplo:

ErrorDocument 403 https://example.com/blog/error_redirect.php

Paso 2 — Agrega código a tu archivo error_redirect.php

Ahora que tu .htaccess redirigirá a la página de error, debes colocar algún código en esta página de error para redirigir correctamente a al inicio de sesión seguro. Agrega el siguiente código PHP.

<?php
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
?>

Si ahora intentas iniciar sesión, verás que tanto la URL como la solicitud de inicio de sesión cambian a https://example.com.

Problema con la renovación de un certificado 'Let's Encrypt'

El código puede hacer que un certificado 'Let's Encrypt' no se renueve correctamente. Si has agregado un certificado 'Let's Encrypt' a tu dominio, asegúrate de deshabilitar el siguiente código en tu archivo .htaccess cuando tu certificado esté a punto de renovarse. Una vez renovado, puedes volver a habilitar el siguiente código.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.