Actualmente heredé una aplicación en el trabajo y para mi consternación, me di cuenta de que las contraseñas de los usuarios almacenadas en la base de datos están encriptadas utilizando una función de encriptación interna, que también incluye la capacidad de desencriptar.
Entonces, todo lo que alguien realmente necesita hacer es copiar la tabla de usuarios y copiar el ensamblado de cifrado (cualquier persona con acceso a la producción de la base de datos) y luego tendrían acceso a 100,000 direcciones de correo electrónico y posibles contraseñas para ellos.
Estoy tratando de explicarle al negocio por qué esto no es una buena idea, pero los conceptos de seguridad parecen pasar por alto ya que no tienen una mentalidad técnica (es para el gobierno). Además, en realidad hay una funcionalidad existente dentro de la aplicación para que los usuarios administradores recuperen las contraseñas de los usuarios con el fin de iniciar sesión como ellos y hacer cosas (lo que han dicho, requieren).
Entonces no entienden las implicaciones de seguridad. Y para implementar una política de seguridad más sólida (contraseñas hash para que no se puedan recuperar fácilmente), tengo que eliminar la funcionalidad existente para ellos.
¿Qué tengo que hacer? No construí el sistema de contraseña en primer lugar, por lo que no es como si me pudieran culpar si algo sale mal. Por otro lado, no me siento bien al respecto y tampoco quiero tener acceso a 100.000 posibles inicios de sesión por correo electrónico.