Foros del Web » Programando para Internet » Javascript »

sistema de contraseñas 100% seguro?

Estas en el tema de sistema de contraseñas 100% seguro? en el foro de Javascript en Foros del Web. Bueno, tengo una duda teorica, nada de codigo. Se me ocurrio cuando estaba pensando un sistema de contraseñas seguro para una web. Siempre hemos tenido ...
  #1 (permalink)  
Antiguo 04/03/2004, 14:46
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Información sistema de contraseñas 100% seguro?

Bueno, tengo una duda teorica, nada de codigo. Se me ocurrio cuando estaba pensando un sistema de contraseñas seguro para una web. Siempre hemos tenido ese dilema de poner una contraseña a un conjunto de paginas y que realmente funcione, que sea indescifrable. Bueno, he pensado algo, por eso lo quiero compartir, y si alguien le encuentra la trampa, que me lo diga:

Empecemos por el principio, por el FAQ170 que yo mismo publique sobre un sistema seguro de contraseñas (no hecho por mi logicamente). Bueno, lo de siempre, lo de poner un

if(contrasena=="sa12sa") location.href="restringido.htm";

pues como que no funciona muy bien, porque a nada que sepas leer un poco de codigo por mucho que lo ocultes... Bueno, pues utilizando el metodo MD5, podriamos codificar la contraseña "sa12sa" manualmente (resulta "F96666B367736C1546D12641C51F0D59"), y entonces si que podemos hacer:

if(calcMD5(contrasena)=="F96666B367736C1546D12641C 51F0D59") location.href="restringido.htm";

Entonces a ver quien nos cala, porque el hashMD5 es indescifrable [todavia].

****************

Vale eso por una parte, para acceder de manera legal a la pagina, pero que pasa si viene alguien y pone en su barra de direcciones http://www.mipagina.com/restringido.htm, entonces ya nos ha fastidiado el sistema. Pues para eso he pensado en cookies. Poner un frame oculto (0%) y que ese frame se encargue. Bueno la pagina de antes colocaria una cookie de acceso, la cual este frame oculto se encargaria de comprobar. Deberia tener un valor algo oculto, no que sea entrado=si, algo como contr=F96666B367736C1546D12641C51F0D59 o cualquier cosa, mas que nada para que no se entienda que influye mucho .

Vale, pues el frame oculto verificaria si existe la cookie, y si su valor es correcto, y si es asi, pues muestra la pagina, sino redirecciona a donde sea. Pero como tambien se puede falsificar cookies, lo bueno seria que cuando se cierre la pagina formada por el frame oculto y el de 100% (onbeforeunload), la cookie se eliminara.

_*_*_*_*_*_*_*_*_*_*


Bueno, pues ya esta, seria eso mas o menos. Solo le encuentro un fallo. Que el usuario encuentre la cookie y le cambie la fecha, o la copie y se la pase a un amigo o la difunda etc.

Es el sistema mas seguro que he conseguido lograr. ¿Como lo veis?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 04/03/2004 a las 16:18
  #2 (permalink)  
Antiguo 04/03/2004, 15:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 444
Antigüedad: 20 años, 6 meses
Puntos: 0
pueque!

pero me gustaria ver como programas la cookie en el archivo cliente...

por otra parte

esta canijo copiar la cookie, a veces es canijo aunque tengas conocimientos en sistemas... (flojera, sus nombres raros, etc)

muy buena idea para validar...

¿cuanto te llevo? jeje

Última edición por vicms; 04/03/2004 a las 15:02
  #3 (permalink)  
Antiguo 04/03/2004, 16:11
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
cookies facilmente

Nose, me ha venido hoy la "luz" y la inspiracion , no he estado pensando para sacar el sistema, solo se me ha ocurrido.

Cómo poner una cookie y borrarla en tiempo de ejecucion es sencillo. Fijate en este script, le he puesto una interfaz de prueba:

Código PHP:
<script language="javascript">
<!--
//  Cookie Functions -- "Toss Your Cookies" Version (22-Mar-96)
//  Autor:  Bill Dortch, hIdaho Design <[email protected]>
//  Traductor: Carlos Castillo <[email protected]>
//  URL Ref: http://www.hIdaho.com/,http://www.dic.uchile.cl/~manual/

function FixCookieDate (date) {
  var 
base = new Date(0);
  var 
skew base.getTime(); // dawn of (Unix) time - should be 0
  
if (skew 0)  // Except on the Mac - ahead of its time
    
date.setTime (date.getTime() - skew);
}

// Funcion interna que retorna el valor desempaquetado de una cookie.
function getCookieVal (offset) {
  var 
endstr document.cookie.indexOf (";"offset);
  if (
endstr == -1)
    
endstr document.cookie.length;
  return 
unescape(document.cookie.substring(offsetendstr));
}

function 
GetCookie (name) {
  var 
arg name "=";
  var 
alen arg.length;
  var 
clen document.cookie.length;
  var 
0;
  while (
clen) {
    var 
alen;
    if (
document.cookie.substring(ij) == arg)
      return 
getCookieVal(j);
    
document.cookie.indexOf(" "i) + 1;
    if (
== 0) break; 
  }
  return 
null;
}
// argumentos: name,value,[expires],[path],[domain],[secure]
function SetCookie (namevalue) {
  var 
argv SetCookie.arguments;
  var 
argc SetCookie.arguments.length;
  var 
expires = (argc 2) ? argv[2] : null;
  var 
path = (argc 3) ? argv[3] : null;
  var 
domain = (argc 4) ? argv[4] : null;
  var 
secure = (argc 5) ? argv[5] : false;
  if (
expires!=nullFixCookieDate(expires);         // para correccion automatica de fecha.
  
document.cookie name "=" escape (value) +
    ((
expires == null) ? "" : ("; expires=" expires.toGMTString())) +
    ((
path == null) ? "" : ("; path=" path)) +
    ((
domain == null) ? "" : ("; domain=" domain)) +
    ((
secure == true) ? "; secure" "");
}

function 
DeleteCookie (name) {
  var 
exp = new Date();
  
FixCookieDate (exp); // Correct for Mac bug
  
exp.setTime (exp.getTime() - 1);  // This cookie is history
  
var cval GetCookie (name);
  if (
cval != null)
    
document.cookie name "=" cval "; expires=" exp.toGMTString();
}


//-->
</script>

Nombre <input type="text" name="nombre" size="30"><br>
Valor <input type="text" name="valor" size="62"><br>
<input type="button" value="creaCookie" onclick="SetCookie(nombre.value,valor.value)"><br>
<input type="button" value="valorCookie" onclick="resultado.value=GetCookie(nombre.value)"><br>
Resultado <input type="text" name="resultado" size="62"><br>
<input type="button" value="borraCookie" onclick="DeleteCookie(nombre.value)"> 

Si resulta bien el sistema sin fallos mas o menos intentare publicarlo con el codigo entero.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.

Última edición por derkenuke; 04/03/2004 a las 16:17
  #4 (permalink)  
Antiguo 05/03/2004, 04:38
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
El tema de las cookies es relativamente facil.

Hice un sistema similar, lo tengo publicado aquí, echale un ojo a ver si te sirve de referencia

http://javascript.tunait.com/javascr...ex.asp?s=pass2

  #5 (permalink)  
Antiguo 05/03/2004, 07:40
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Si, es bueno, ademas puedes tener más contraseñas sin modificar código
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 05/03/2004, 12:02
 
Fecha de Ingreso: noviembre-2003
Mensajes: 444
Antigüedad: 20 años, 6 meses
Puntos: 0
se tendria que dividir en 2 partes

colocar el cookie:

if(calcMD5(contrasena)=="F96666B367736C1546D12641C 51F0D59") { location.href="restringido.htm";
//establezco la cookie si me logueo... y puedo introducir un valor o variable valida...
//aqui mas codigo del set cookie etc etc
setcookie(nombre.value,valor.value);

}


el check del cookie (el getcookieval) :
(modificando un poco la variable o con la variable por defecto puedo checar si es mi galleta y validar)

function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

porciones de codigo como ejemplo, a grandes rasgos seria asi, pero realmente con todas las funciones del script arriba expuesto, tendriamos que rebanar el script para saber cuales podemos emplear, en el setcookie (pagina de login) y cuales meter en el getcookie o getcookieval (pagina restringida)

podemos checar primero si hay cookie y si hay lo redirigimos a la pagina automaticamente

y si no establecemos la cookie con el MD5 y todo eso...

buen proyecto pues, espero haber ayudado o al menos confundirte mas...


ja, por cierto, buena pagina la de entrada a videosguarros.es.vg...



saludos

Última edición por vicms; 05/03/2004 a las 12:07
  #7 (permalink)  
Antiguo 05/03/2004, 15:53
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Jeje, gracias .

Bueno a ver si pongo todo el sistema en practica algun dia de estos y posteo el codigo completo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 06/03/2004, 10:06
 
Fecha de Ingreso: noviembre-2003
Mensajes: 444
Antigüedad: 20 años, 6 meses
Puntos: 0
veremos que tal va... haber si pongo una seccion de miembros

solo que quizá estableceré un .js con los nombres de usuario y las contraseñas (en modo MD5) también seria interesante...

saludos!

Última edición por vicms; 06/03/2004 a las 10:08
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:00.