Tema: seguridad
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/09/2011, 00:56
GrupoC
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 6 meses
Puntos: 19
Respuesta: seguridad

Cita:
Iniciado por masterpuppet Ver Mensaje
Solo con MD5 o SHA1 la protección seria algo débil, quedaría expuesto a un ataque a través de rainbow tables, seria mejor un doble hash + salt, algo así:

Código PHP:
Ver original
  1. $salt = '$#cr{B}owf!sh';
  2. $hash = sha1(md5($pass) . $salt);

Y habría que tener en cuenta también la ubicacion del servidor de bbdd, si esta en otro servidor y la conexión no es segura se podría obtener el hash, en esta caso seria mejor buscar el usuario y luego comparar el password.

Saludos.
Te equivocas.

Lo del salt es completamente correcto. Un MD5 o un SHA1 (podemos extenderlo a cualquier algoritmo) no es realmente seguro si no se emplea un salt pseudo-aleatorio que permita modificar el contenido de la contraseña, evitando de una forma más eficaz posibles ataques por fuerza bruta (que funcionan muy bien con MD5, dado que es demasiado utlizado).

Pero lo que no es correcto es decir que lo mejor es hacer md5(sha1(.......)))))))). Eso es incorrecto. ¿Porqué? Pues porque las propiedades matemáticas que hacen que esos algoritmos tengan pocas colisiones hash cercanas (dado que colisiones hay siempre infinitas) se pierden al combinarse, por lo que la posibilidad de ataques por fuerza bruta es mucho mayor.

Un saludo!
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation