Estoy creando una aplicación de escritorio en C # y quiero saber si estoy manejando esto (desde la perspectiva de seguridad) como debería ser o no.
La tabla Mis usuarios tiene tanto hashed_password
como salt
, ambos son binarios (32).
Para crear una nueva cuenta:
- El usuario escribe el nombre de inicio de sesión y la contraseña
- Se genera aleatoriamente una sal (esto sucede en el lado del cliente).
- La sal creada se utilizará para codificar la contraseña (SHA256).
El inicio de sesión:
- El usuario escribe su contraseña
-
Se realiza una declaración
select
en la base de datos para obtener el salt , hash la contraseña escrita con ese salt y luego se compara con la base de datos
Mis preguntas son:
- ¿Es una mala práctica que su contraseña salte como
binary(32)
? - ¿Tiene sentido generar la sal en la aplicación y luego enviarla a la base de datos? Si no, ¿por qué? (Solo un usuario tendrá acceso a la función de creación de cuentas, él creará las cuentas para todos)
- ¿Si la parte en negrita de arriba es una mala práctica?