Estamos diseñando una API web, accesible solo a través de https, pero parece que han surgido dos escuelas de pensamiento entre nuestro equipo:
Grupo 1 quiere adoptar un enfoque más preocupado por la fuga de datos que los ataques MITM:
- Las contraseñas se enviarán en forma clara en las solicitudes (pero, por lo tanto, un MITM podría recuperar la contraseña de un usuario).
- Las contraseñas serán ofuscadas de manera no reversible en la base de datos (bcrypt).
Grupo 2 siente que el riesgo de un ataque MITM supera el de la fuga de datos. Por lo tanto:
- Las contraseñas se enviarán en solicitudes en forma de resumen, por lo que no se pueden recuperar mediante un MITM.
- Como resultado del uso de compendios, la contraseña original debe ser recuperable en el servidor para que se pueda recrear el compendio. Por lo tanto, las contraseñas se almacenarán encriptadas en la base de datos.
Si bien la seguridad total es obviamente imposible, ¿existe una tercera forma que pueda tener lo mejor de ambos mundos? Si bien el enfoque del Grupo 1 parece bastante ortodoxo, ¿qué tan común es el Grupo 2?