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.
¿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
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
"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