Registrarse:
- Se comparan ambos cuadros de texto de la contraseña ingresada por el usuario, si coinciden:
- Agregue el correo electrónico del usuario a la tabla [usuarios] en la base de datos, para tener una identificación de usuario para luego grabar todo.
- Crea sal. Todo lo suficientemente aleatorio, y lo suficientemente complejo será suficiente. Nombre de usuario + fecha actualTiempo - hash MD5. GUID, nombre de usuario + número aleatorio con hash, etc.
- Registre la sal en una tabla Salt en la base de datos junto con el ID de usuario y el nombre.
- Agregue la contraseña y la sal del usuario.
- Hash que usa Encryption1
- Hash que usa Encryption2
- Registre que, junto con la identificación del usuario y sus detalles (si corresponde) que proporcionaron en el formulario de registro.
- Se envió una verificación de correo electrónico opcional para asegurarse de que están usando un correo electrónico legítimo.
Iniciar sesión.
- Obtenga la sal utilizando el nombre de usuario ingresado por el usuario.
- Si se devuelve sal, realice los pasos 5-7 del registro (pwd + salt, hash, hash)
- Cuando recuperamos la sal, también obtuvimos una ID de usuario, comparamos el resultado del Paso 2 y la ID con los registros en la base de datos.
- Si hay una coincidencia, el usuario usó su correo electrónico y contraseña y puede iniciar sesión.
- Cree una variable de sesión y permita que continúen.
Un beneficio que creo que todo esto conlleva es que, incluso si se accede a toda mi base de datos de forma completamente desprotegida, la contraseña es una cadena de 50 caracteres con doble hash que utiliza métodos de cifrado diferentes.