Páginas con clave |
A veces es necesario, por las razones que sean, que una o más de nuestras páginas solo estén disponibles para algunas personas.
Una solución (chapucera) es hacer una página secreta, o sea, no darle la dirección de la página a nadie salvo a los interesados. Pero los secretos no suelen serlo por mucho tiempo, y al final alguien acabará poniendo un link en alguna parte que vaya a tu página.
La solución ideal es ponerle clave a la página, de modo que solo pueda acceder a ella quién conozca esa clave.
Existe varios modos de hacer esto. Algunos francamente malos y otros muy buenos. Vamos a empezar con los malos:
Este método no es malo: Es peor. Lo pongo aquí porque lo he visto en algún sitio, y nadie debería cometer el mismo error.
La idea de este sistema es poner un código JavaScript de este tipo:
<HTML>
<HEAD>
<TITLE>Se necesita clave</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Saltar(pal){
if (pal=='sesamo'){window.location="secreta.html"}
else {alert ('Respuesta equivocada')}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<P>Introduce la palabra clave (es sesamo)</P>
<INPUT TYPE="Password" NAME="palclave" SIZE=25 VALUE="">
<INPUT TYPE="button" VALUE="Acceder" onClick="Saltar(this.form.palclave.value)"></P>
</FORM>
</BODY>
</HTML>
El principal error de este método (y de cualquiera de sus variantes) es que la clave está contenida en el código, de forma que cualquiera puede leerla.
Pero, además de no ser nada seguro, tiene otros defectos, que veremos en el siguiente método.
El modo más popular hoy día entre los webmasters aficionados solo es ligeramente mejor que el anterior.
Es cierto que soluciona el problema de la absoluta inseguridad que teníamos antes, pero no deja de tener sus problemas. Veamoslo:
<HTML>
<HEAD>
<TITLE>Se necesita clave</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Saltar(pal){window.location=pal+".html"}}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<P>Introduce la palabra clave (es sesamo)</P>
<INPUT TYPE="Password" NAME="palclave" SIZE=25 VALUE="">
<INPUT TYPE="button" VALUE="Acceder" onClick="Saltar(this.form.palclave.value)"></P>
</FORM>
</BODY>
</HTML>
Humm. Esto ya está mucho mejor. Ya no se ve por ninguna parte la clave no la página objetivo. El truco aquí consiste en usar el nombre de página como clave. De este modo, para usar la clave "sesamo", tenemos que poner como página secreta "sesamo.html". Facil ¿Verdad?
pero esto no deja de tener sus problemas. Para empezar, es un uso "ilegal" de un formulario HTML. La sintaxis de HTML obliga a incluir los parámetros ACTION y METHOD. El que no se pongan no suele dar problemas (a lmenos, no con los navegadores más populares), pero nada nos garantiza que pueda funcionar con cualquier navegador actual o con futuras versiones.
Además, los usuarios cuyos navegadores no soporten JavaScript segurán sin poder acceder a la página reservada, aunque conozcan la clave.
Y, por último, todos los usuarios con acceso tienen la misma clave, de modo que si decides quitar el acceso a un usuario, la unica opción que tienes es cambiar el nombre del archivo (y, por tanto, la clave) y dar la nueva clave a todos los demás.
Algunos de los problemas que hemos visto arriba pueden solucionarse usando un método distinto a un formulario para introducir la clave. Para ello contamos con una pequeña ayuda por parte de JavaScript:
<HTML>
<HEAD>
<TITLE>Se necesita clave</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function clave(){
pal=prompt('Introduce la clave (es sesamo)','')
window.location=pal+".html"
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="clave()">
<P>Página con clave.</p>
</BODY>
</HTML>
Este código es solo algo mejor que el anterior. Aunque ya es código válido, tiene los mismos problemas en cuanto a que solo hay una clave para todos y que está basado en JavaScript.
Este es el autentico método para poner password a una página o serie de ellas. Lo malo es que requiere que tengamos acceso a algunas características de configuración del servidor web, y eso es algo de lo que podemos olvidarnos en la mayor parte de los hostings gratuitos.
Este método es el utilizado por el servidor Apache, que es el más extendido de Internet.
Requiere de varias cosas:
Un directorio que queramos protejer con contraseña (evidentemente), en el que introduciremos las páginas "restringidas".
En ese directorio, además de esas páginas, colocaremos dos archivos de texto:
El primero se llamará .htaccess (si, con un punto delante del nombre), y contendrá el siguente texto:
AuthName "Texto de la ventana"
AuthType Basic
AuthUserFile /ruta/al/directorio/protegido/.claves
require valid-user
Donde pone "Texto de la ventana" puedes poner tu propio texto, que se mostrará en la ventana donde te pide el nombre de usuario y la clave (las comillas solo son necesarias si el texto contiene espacios).
la "/ruta/al/directorio/protegido/" es eso, la ruta dentro del host donde está el directorio que quieres proteger.
El nombre que hay tras la ruta (.claves) es el nombre del fichero donde, como veremos más adelante, se guardarán los nombres de usuario y claves. Puedes usar el nombre que prefieras.
El archivo .htaccess debe terminar con un retorno de carro (es decir,despues de escribir la última línea, pulsas la tecla "enter", como si fueras a escribir una línea mas).
El otro archivo que tienes que situar en el directorio es, evidentemente, el archivo de claves (en nuestro caso .claves).
Este archivo tiene el siguiente formato:
yo:DVt5rEaVF7Fy2
usuario:jsWejx/5HC6FU
otro:q8RZXNKJtyz.o
Este archivo también debe terminar con un retorno de carro.
¿Pero qué demonios es esto?
Esto es un archivo de claves para tres usuarios, que usan los nombres "yo", "usuario" y "otro" respectivamente.
Cada uno de los nombres de usuario está seguido de su clave encriptada, separada por el signo "dos puntos" (:).
Pero ¿Cómo se encripta la clave?
Bueno. En principio necesitas tener acceso al sistema en el que trabajas (por ejemplo, mediante telnet). Y ejecutar allí el comando htpasswd, que sirve precisamente para crear ficheros de claves. Para ello tienes que hacer lo siguiente:
htpasswd [ -c ] archivo usuario
Donde "archivo" es el nombre del archivo de claves, "usuario" es el nombre de usuario, y "-c" es opcional, e indica que queremos crear un nuevo archivo con ese nombre. Tras hacer esto te pedirá la clave (y te la volverá a pedir para confirmarla) y escribirá él mismo el archivo.
Pero, normalmente, no tenemos acceso a cuentas de telnet con las que poder ejecutar comandos en el servidor. ¿Qué podemos hacer entonces?
Los que tengais un UNIX o Linux en casa lo teneis muy fácil: ¡El comando htpasswd está disponible en vuestro propio ordenador! Solo teneis que hacer lo mismo que he indicado arriba en vuestra propia máquina.
Pero no todo el mundo tiene un UNIX/Linux en casa. Cómo nos las apañamos entonces?
Vuestro amigo Allan Psicobyte no os iba a dejar tirados de ese modo, así que he rebuscado por la red hasta encontrar lo que necesitais:
Y lo que necesitais es un pequeño programa totalmente freeware (gratis) que haga lo mismo que hace htpasswd.
Este programa se llama htpw-dos.exe, y puedes descargarlo en este link (comprimido con zip, 31'2 Kb.). Funciona en DOS y Windows. Desafortunadamente, no he encontrado versiones para otros sistemas operativos.
El uso de este programa es exactamente igual al que hemos visto para htpasswd.
Y bién. Una vez que hemos creado nuestro directorio y lo hemos protegido, ya solo nos falta subir las páginas que queramos a él y ver un ejemplo de directorio protegido con este método.
Lo malo de este método es que casi ningún servidor (y mucho menos gratuito) te da opción a crear o modificar el archivo .htaccess.
Creo que ya es suficente para este artículo. Hasta pronto.
| Página principal | Curso de HTML | Tutorial de CSS | Mapa del Site |