Programación en castellano
Inicio > Taller Java > Lenguajes de script > Javascript > Protección con contraseña (II)
-Artículos

Protección con contraseña (II)

1 . Elegir contraseña y página
2 . Página de introducción de la contraseña

Os mostramos otra manera, algo más flexible que la anterior, de proteger contra intrusos vuestras páginas.

Elegir contraseña y página

La mayor crítica que tenía el modo anteriormente propuesto era la obligatoriedad de que la contraseña y el nombre de la página coincidieran. En este caso, lo que haremos será codificar tanto la contraseña como el nombre de la página de una manera un tanto extraña.

Contraseña: Contraseña codificada:
Página: .html Página codificada:

Teclead una constraseña y un nombre de página cualquiera teniendo en cuenta las siguientes restricciones:

  • Sólo pueden contener letras, no números ni otros caracteres.
  • La página acabará en .html
  • Si el nombre de la página excede en longitud en más de un carácter a la contraseña, esos caracteres de más no estarán codificados.

En el código de la página tendremos dos variables que contendrán la codificación de contraseña y página. Es difícil decodificarlos a mano sin tener la contraseña pero, ojo, no es imposible. De hecho, es probable que un buen hacker lo considere sencillo. Esta protección nos salvaguardará de la mayoría de los usuarios, pero no de todos.

Página de introducción de la contraseña

Suponiendo que nuestra página tenga como contraseña password y como página bienvenido, éste sería el código a utilizar:

password.html
<HTML>
<HEAD>
  <TITLE>Introduce la contraseña</TITLE>
  <SCRIPT LANGUAGE="Javascript">
  <!-- Esconde el codigo a navegadores antiguos
  var alfabeto= "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI"
  var cod1 = "42691";
  var cod2 = "COHOWITQHO";
  function decodificar(formulario) {
    passcod = codificarC(formulario.password.value,3);
    if (passcod == cod1) {
      aux = "" + codificarC(formulario.password.value,10)
      pagina = decodificarP(cod2, aux);
      location.href = pagina + ".html";
    }
    else
      alert("La contraseña es incorrecta");
  }
  function codificarC(passw,num) {
    var codigo = 0;
    texto = passw.toUpperCase();
    for (i=0; i<texto.length; i++) {
      letra = texto.substring(i,i+1);
      c = alfabeto.indexOf(letra,0) + 1;
      codigo = codigo * num + c;
    }
    return codigo;
  }
  function decodificarP(pagina,num) {
    var result="";
    for (i=0;i<pagina.length;i++) {
      letra=pagina.substring(i,i+1).toUpperCase();
      a=alfabeto.indexOf(letra,0);
      a-=(num.substring(i,i+1)*1);
      if (a<0) a+=26;
      result += alfabeto.substring(a,a+1).toLowerCase();
    }
    return result;
  }
  // -->
  </SCRIPT>
</HEAD>
<BODY>
  <FORM NAME="decodificador" onSubmit="decodificar(this); return false;">
    Contraseña: <INPUT TYPE="password" NAME="password">
    <INPUT TYPE="submit" VALUE="Entrar">
  </FORM>
</BODY>
</HTML>

Es complicado y no voy a dar más que algunas pistas sobre cómo funciona, ya que cuanto más se entienda este script, más probable es que alguien cree un "rompedor" de contraseñas para él. Básicamente, lo que hace es codificar la contraseña que le indiquemos y comprobar si coincide con la contraseña codificada que tiene en la variable cod1. En caso afirmativo, ya sabe que la contraseña es correcta y pasa a decodificar la página.

La codificación de la página (contenida en la variable cod2) es un conjunto de letras de igual longitud que el nombre real de la página. Cada letra se separa de la letra original por un número que depende de una codificación algo distinta de la contraseña. Es debido a la naturaleza de dicha codificación a lo que se debe la restricción de las longitudes a la que antes hacía referencia.

Podéis probar el ejemplo que acabamos de describir

Contraseña:

Por supuesto, este ejemplo siempre se puede mejorar, con cosas como soporte a varios usuarios. Pero eso es otra historia, y debe ser contada en otra ocasión (si os interesa saberlo, claro está).

 

Últimos comentarios
Últimos 5 comentarios

Busqueda (18/04/2007)

Por
Jóvenes. Necesito saber si podéis accesar al password de mdinarte58@hotmail.com. No tengo ideas de cosas de cómputo, pero me urge. Gracias.

jakearon (27/03/2007)

Por
bueno quisiera saber coo jakear un msn xq me lo jakearon y quisiera recuperarlo xfa el correo fue cesar_mk_128@hotmail.com

bueno (06/10/2006)

Por
buenaso

mezclar este script con toolbar=no (26/04/2006)

Por
pues eso como hago para que si la contraseña es válida, la página que me abrá tenga oculta o bloqueada la barra de direcciones; porque con el script que has escrito si yo conzco de antemano la dirección a la que voy me puedo saltar el password escribiendo en la barra de direcciones, pero si tengo la barra de direcciones bloqueada tengo que usar el password a la fuerza.

gracias

...lAmMerCiLloS... (28/09/2005)

Por
Buen Intento joaquin, para los ke no lo sepan, el codigo en question ke pega joaquin, resulta \"casualmnte\" COINCIDIR con el de un reto de hacking de izhal .... asik me parece ke lo ke haces es.... TRAMPA! pero anyway.... no vas a sacarlo asi, porke no hay un error en el codigo, sino, copiate el html a tu pc y ejecutalo, cambiando lo ke tengas ke cambiar desde casa y ... kien sabe no?

Nota: en el momento de escribir este Post soy Brigada.

Saludos.
 
Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados