Actualmente estoy desarrollando una plataforma con un marco PHP para nuestro cliente.
El jefe del departamento de TI del cliente quiere que manejemos la autenticación con un campo de base de datos que contiene correo electrónico + contraseña + sal (hash), por lo que no hay un campo de correo electrónico de texto sin formato en esta tabla y la contraseña es más segura (su razonamiento ). El usuario debe poder iniciar sesión con su dirección de correo electrónico y contraseña. Así que la dirección de correo electrónico sirve como nombre de usuario. La idea detrás de esto es que las direcciones de correo electrónico de los usuarios son muy importantes para el negocio de nuestro cliente y el jefe de TI desea ocultar la dirección de correo electrónico en la tabla de inicio de sesión en caso de un posible ataque. (por ejemplo, un pirata informático obtiene acceso a la tabla de inicio de sesión)
Por supuesto, esto solo es posible, ya que la dirección de correo electrónico con hash para el inicio de sesión está vinculada a su dirección de correo electrónico en la tabla de perfiles. Básicamente, hay dos tablas que son necesarias para que este proceso funcione. Las tablas están en la misma base de datos, por supuesto. Una tabla de inicio de sesión con el campo de combinación de hash (correo electrónico, pw, sal) y una tabla de perfil que contiene, entre otras cosas, el correo electrónico en texto sin formato en un campo. Llamémoslo profile_email.
Recomendé encarecidamente no usar esta solución, porque nunca antes había escuchado sobre esto y ya he identificado algunos problemas posibles con esta solución.
Así que mis preguntas son: ¿Es esta una solución segura y viable? ¿Se te ocurren problemas imprevisibles? ¿Has oído hablar de soluciones similares?