Navegador

Tamaño de Fuente

 
 

Login

 

Acceso Restringido

Restringir el acceso a sus páginas HTML a determinados usuarios

Si desea que el acceso a sus páginas web sea restringido sólo a determinados usuarios, existe la opción de crear un archivo llamado .htaccess. Este archivo debe ser guardado en el subdirectorio que quiera proteger. Su contenido tendrá una forma como la siguiente:

AuthType Basic
AuthName <nombre_recurso_restringido>
AuthUserFile <path_password_file>
require valid-user

  • Asigne el valor de nombre_recurso_restringido al nombre bajo el que desea que aparezca su dominio o campo.
  • path_password_file contiene la ruta completa donde se encuentra el archivo con los usuarios que tendrán permiso para acceder esas páginas HTML. Frecuentemente este archivo se llama .htpasswd, aunque admite cualquier nombre. El formato será una lista de la forma siguiente:
    
    <nombre_usuario_1>:<pass_usuario_1>
    <nombre_usuario_2>:<pass_usuario_2>
    ...
    <nombre_usuario_n>:<pass_usuario_n>
    

Script PHP para crear automáticamente los archivos .htaccess y .htpasswd

El siguiente script PHP genera los archivos .htaccess y .htpasswd a partir del nombre de usuario, contraseña y directorios deseados de los ficheros a partir de los datos introducidos en un formulario. Copie dicho script a cualquier directorio dentro de su espacio web e introduzca los directorios de los archivos relativos a dicho directorio (por ejemplo, si coloca los archivos que desea proteger en /public_html/restringido y tiene el script PHP en public_html, debe indicar restringido como directorio en el formulario):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" >

    <head>
        <title>Generador de archivos .htaccess y .htpasswd</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>

    <body>

<?php
    if(isset($_POST['submit'])) {
        if(empty($_POST['user']) || empty($_POST['password']) ||
           empty($_POST['htaccess_path']) || empty($_POST['htpasswd_path'])) {
           echo "<p>Debe rellenar todos los datos del formulario.</p>";
        }
        else {
            echo "<h1>Archivo <code>.htaccess</code></h1>\n";
            echo "<p>Cree el archivo <code>" . $_POST['htaccess_path'] .
                 "/.htaccess</code> con el siguiente contenido:</p>\n";
            echo "<pre>\n";
            echo "AuthType Basic\n";
            echo "AuthName \"Acceso restringido\"\n";
	    echo "AuthUserFile " . dirname(__FILE__) . "/" . $_POST['htpasswd_path'] . "/.htpasswd\n";
            echo "Require valid-user\n";
            echo "</pre>";
            echo "<h1>Archivo <code>.htpasswd</code></h1>\n";
            echo "<p>Cree el archivo <code>" . $_POST['htpasswd_path'] .
                 "/.htpasswd</code> con el siguiente contenido:</p>\n";
            echo "<pre>\n";
            echo $_POST['user'] . ":" . crypt($_POST['password']) . "\n";
            echo "</pre>";
        }
    }
?>

    <p>Rellene los campos del siguiente formulario con los valores deseados
       para generar los archivos <code>.htaccess</code> y
       <code>.htpasswd</code>:</p>
    <form action="<?php echo "https://" . $_SERVER['SERVER_NAME'] .
    $_SERVER['PHP_SELF']; ?>" method="post">

        Usuario: <input type="text" name="user" /><br />
        Contrase&ntilde;a: <input type="password" name="password" /><br />
        Directorio del archivo <code>.htaccess</code> (relativo al directorio donde se encuentra esta página):
        <input type="text" name="htaccess_path" /><br />

        Directorio del archivo <code>.htpasswd</code> (relativo al directorio donde se encuentra esta página):
        <input type="text" name="htpasswd_path" /><br />
        <input type="submit" name="submit" value="Generar" />
    </form>
    </body>

</html>

Ejemplo

  • Deseo permitir el acceso a mi directorio restringido, dentro de mi espacio web personal (/public_html/restringido), sólo a determinados usuarios. Por ejemplo, alice y bob.
  • Partimos de que mis páginas .html ya están ubicadas en el servidor de la Universidad, por tanto, ya han sido copiadas al directorio public_html/restringido.
  • A continuación se presenta, paso por paso, lo que habría que hacer.

Ejemplo: descripción paso a paso

  • Creamos el generador de archivos .htaccess en nuestro directorio public_html, con el código PHP previamente descrito. Lo llamamos, por ejemplo, generador_htaccess.php.
  • Accedemos mediante un navegador web al generador. Si nuestro usuario es usuario, la dirección web sería https://www.ugr.es/~usuario/generador_htaccess.php. Nos debe aparecer una página como la siguiente: acceso_restringido_imagen_generador

  • Introducimos los datos en el formulario. Puesto que el directorio en el que queremos restringir es el directorio restringido, ponemos en ambos la cadena restringido. Asimismo, introducimos como nombre de usuario alice y como contraseña la contraseña deseada (por ejemplo alice): acceso_restringido_datos_formulario

  • Pulsamos Generar y obtendremos la información que debemos incluir en los archivos .htaccess y .htpasswd: acceso_restringido_salida_formulario

  • Creamos dichos archivos en el directorio indicado. A partir de ahora, cuando accedamos a cualquier página en http://www.ugr.es/~usuario/restringido aparecerá una ventana solicitando los datos de autenticación. Sólo podrá autenticarse el usuario alice con su contraseña correspondiente: acceso_restringido_autenticacion

  • Introducimos los datos para el usuario bob. Esta vez ya no será necesario crear los archivos .htaccess y .htpasswd. Simplemente habrá que añadir la línea para el usuario bob (nombre de usuario y contraseña cifrada) al archivo .htpasswd:

    acceso_restringido_salida_formulario_2

  • Por último, si quisiésemos eliminar la restricción de acceso, únicamente debemos borrrar los archivos .htaccess y .htpasswd creados anteriormente (en realidad, es suficiente con eliminar el archivo .htaccess). Si, en cambio, deseáramos mantener la restricción de acceso pero impedir acceder a alguno de los usuarios previamente autorizados, tendríamos que eliminar las líneas para dicho usuario en los archivos .htaccess y .htpasswd (nuevamente, bastaría con eliminar las entradas correspondientes en el archivo .htaccess).

Más información

Puede encontrar más información sobre autenticación, autorización, control de acceso y archivos .htaccess en el sitio web de Apache (autenticación, archivos .htaccess).

 

Disclaimer: "Google translator" is showed in the upper part of the site in order to help to translate into other languages. CSIRC is not responsible for its quality.

tfno: 958 241 010 * fax: 958 244 221 * email: csirc@ugr.es
Politica de Privacidad