2011-06-16 42 views
10

¿Está bien y no es inútil? Se podría guardar en otra tabla o incluso en otra base de datos.¿Está bien guardar la sal del usuario en la misma tabla que el hash de contraseña?

¿Qué opinas?

P.S. Para mayor seguridad, también tengo los "maníes" de sal constantes. Es un valor constante guardado en el archivo de configuración (no en la base de datos). Entonces, si el pirata informático quiere piratear de alguna manera la contraseña, también necesita acceso al servidor de archivos y a la base de datos.

+2

¿Su plataforma no tiene una implementación de inicio de sesión/seguridad decente? Reinventar esto es arriesgado, sin importar cuánto pienses al respecto. – spender

+0

Estoy usando Kohana y hay un módulo listo para usar para eso. Esto es más por mi propio conocimiento y demás. – daGrevis

+0

"Tengo contraseña" cacahuetes "también". ¿Quiere decir que tiene un * agregado de sal constante * "cacahuetes"? En ese caso, tiene sentido (y esa es la forma en que su respuesta aceptada lo interpretó). – mgiuca

Respuesta

20

Sí, está bien para almacenar la sal por usuario en la misma tabla que almacena la contraseña de hash (no la propia contraseña) - incluso si el adversario tiene acceso a los datos de base de datos en bruto, que había todavía necesita probar la contraseña de salt + de cada usuario por separado; almacenar la sal en otra tabla realmente no agrega ninguna seguridad significativa (si usted supone que el adversario tiene acceso a la base de datos, no tiene mucho sentido para mí suponer que solo tiene acceso a una parte).

Si está utilizando salt + cacahuetes + contraseña para crear el hash de contraseña, entonces diría que su diseño es más seguro que el 80% de los sistemas que existen, es decir, razonablemente seguro sin excederse con paranoia.


Obsérvese, sin embargo, que si en realidad estás almacenar la contraseña en forma recuperable (cifrado o texto plano), que está lanzando ningún tipo de seguridad por la ventana - todo el punto de sales y hash es que son no almacenando la contraseña en forma recuperable. Si almacena la contraseña, ese es el vínculo más débil de su sistema, que entonces es completamente inseguro. Para aclarar las cosas: la tabla de usuario solo debe contener el sal y hash de salt + cacahuetes + contraseña, nunca la contraseña sí mismo.

+0

¡Gran respuesta! Gracias por "80% -thing". =] – daGrevis

+1

Obtengo la sal y el hash, pero ¿qué son los cacahuetes? – Antony

+3

@Antony: Funcionan bien con sal;) Es una forma de referirse a una sal por aplicación, probablemente almacenada en el servidor de aplicaciones (para que en caso de compromiso de la base de datos, parte de la sal esté fuera del alcance del atacante) . También llamado "pimienta", en la misma veta humorística. – Piskvor

3

Desea almacenar 1) la sal por usuario y 2) el resultado de hash password + salt). No desea almacenar la contraseña en sí.

+0

Lo siento, no respondió mi pregunta. = P I was asking: "¿Es okey guardar la sal del usuario en la misma tabla que la contraseña?". – daGrevis

+1

@daGrevis - Y mi respuesta es que no está bien almacenar la contraseña en absoluto –

+0

Con la contraseña quise decir la contraseña hash (usando SHA-1 con sal y nueces). – daGrevis

Cuestiones relacionadas