¿Debe un usuario administrador poder editar contraseñas?

12

Para su aplicación web típica, ¿debería un superusuario de administrador tener derecho a editar la contraseña de un usuario o solo ese usuario debe tener el derecho? (Incluso con la capacidad de edición, el administrador nunca vería la contraseña actual).

    
pregunta VirtuosiMedia 01.03.2012 - 23:53
fuente

3 respuestas

13

Veo tres preguntas relacionadas:

¿Debería un usuario administrador ver la contraseña de un usuario? No. Esta es una mala idea. No debe exponer (a través de la interfaz de administración) una forma en que los usuarios de administración vean las contraseñas de otros usuarios. Algunos usuarios pueden reutilizar contraseñas en varios sitios. Por lo tanto, a los usuarios nunca se les debe permitir ver la contraseña del usuario.

Además, la única manera de permitir que un usuario administrador vea las contraseñas de otros usuarios es almacenar esas contraseñas de forma clara (o, si se aplica alguna transformación, tiene que ser reversible, en cuyo caso las contraseñas también podrían almacenarse en el claro). Esta es una mala práctica de seguridad. Las contraseñas almacenadas siempre deben estar ocultas, de modo que una violación de su base de datos no revele de manera trivial las contraseñas de todos, y eso significa que los usuarios administradores no podrán ver las contraseñas de otros usuarios.

¿Debería un usuario administrador poder restablecer la contraseña de un usuario? Seguro. Eso es útil. Por ejemplo, es razonable darle al usuario administrador una forma de restablecer la contraseña del usuario, por ejemplo, activando un correo electrónico para que el usuario pueda iniciar sesión e ingresar una nueva contraseña, o generar una nueva contraseña para el usuario y enviarla por correo electrónico al usuario. Sin embargo, el sistema no debe mostrar la nueva contraseña al usuario administrador. Además, en este caso, el usuario debe recibir una notificación de que el administrador restablece su contraseña (por ejemplo, como parte del correo electrónico que se les envía) y, preferiblemente, la acción debe registrarse junto con la identidad del usuario administrador.

¿Un usuario administrador debe poder establecer la contraseña de un usuario? Esta es una funcionalidad útil y razonable para proporcionar a un usuario administrador. Por ejemplo, al crear nuevos usuarios, a veces es útil que un usuario administrador pueda generar una contraseña para el usuario, ingresarla en el sistema y comunicar la contraseña al usuario a través de un canal fuera de banda (por ejemplo, , sobre el telefono). De manera similar, a veces también puede ser útil si el usuario administrador tiene la posibilidad de ir a la pantalla para establecer una nueva contraseña para el usuario, dar al usuario el teclado el tiempo suficiente para escribir su nueva contraseña preferida y luego hacer clic en "ok" "y establecer la contraseña del usuario. Estos son casos de uso razonables que podría respaldar razonablemente, sin incurrir en riesgos de seguridad significativos. En este caso, el usuario debe recibir una notificación de que el administrador restablece su contraseña (por ejemplo, un correo electrónico que se le envía) y, preferiblemente, la acción debe registrarse junto con la identidad del usuario administrador.

    
respondido por el D.W. 02.03.2012 - 06:49
fuente
6

Debe ver la postura general de seguridad de la aplicación web antes de poder decir "sí" o "no".

La pregunta implícita aquí es si otorgar al usuario administrador el derecho de editar la contraseña de cualquier usuario como una violación de la seguridad. Si alguien abusara de la cuenta de superusuario del administrador (ya sea un administrador legítimo o un atacante malicioso), ¿qué otras cosas podrían realizar que sean tan malas o peores que poder cambiar la contraseña de un usuario aleatorio? Por ejemplo, ¿pueden restablecer la dirección de correo electrónico del usuario donde se envían los correos de restablecimiento de contraseña? ¿Pueden acceder a la información sensible del usuario? Si es así, la modificación de las contraseñas no hará más daño y el vector de ataque es igual de fácil. (De hecho, a menos que haya datos de usuario que no estén disponibles incluso para el superusuario, el acceso del atacante malintencionado a la cuenta de superusuario es el juego final).

Además, los efectos secundarios deben tenerse en cuenta. En Windows, si el administrador cambia la contraseña de un usuario, puede impedir el acceso a datos cifrados previamente. La razón es porque la contraseña del usuario se utiliza para derivar la clave de cifrado.

Si tuviera que evitar que la cuenta de superusuario pueda cambiar las contraseñas, creo que, desde la perspectiva de la administración del sistema (y, sí, del buen servicio al cliente), aún desea poder permitir una Usuario legítimo para recuperar el acceso a una cuenta bloqueada o perdida. Si esto es cambiando la contraseña o algún otro método (token de una sola vez) depende completamente de la situación.

Si la situación es que desea poder evitar el uso indebido (accidental) de la función por parte de administradores competentes y no hostiles, entonces proteja la funcionalidad sensible al requerir (más) elevación, indicaciones, controles de auditoría importantes, etc.

    
respondido por el logicalscope 02.03.2012 - 00:28
fuente
-4

Nigromancia aquí.
El hecho mismo de que haga esta pregunta me dice que su método para almacenar contraseñas es horriblemente INCORRECTO .

Esta pregunta ni siquiera debería existir, porque si almacenó contraseñas de forma segura (a través de hash de fuerza criptográfica, con sal), técnicamente no podría descubrir ninguna contraseña, ni siquiera con tablas de arco iris.
Todo lo que puede hacer es restablecer la contraseña, y ciertamente ese no es el trabajo del administrador.

Si almacena contraseñas en texto plano o cifrado, esto es incorrecto. Un atacante (podría ser solo un niño, pero también podría ser un crimen organizado, una agencia de inteligencia, posiblemente de un estado no tan agradable) que obtiene acceso a su base de datos (y código) puede obtener la clave (probablemente simétrica), y Descubre todas las contraseñas de todos los usuarios.

Los usuarios tienden a ingresar el mismo nombre de usuario + contraseña en todas partes, por lo que al comprometer su sitio web, un atacante podría obtener acceso a la cuenta de muchos usuarios, por ejemplo. Amazon, FB, correo electrónico, Microsoft, Google Docs, etc. ...

Por lo tanto, almacenar contraseñas de texto sin formato y cifrado es una muy mala idea.
Es posible que en ciertas jurisdicciones, usted (o su compañía) también sean responsables de los daños.

Siempre debe almacenar las contraseñas con un algoritmo de hash seguro criptográficamente lento que esté correctamente almacenado , en cuyo caso es (con suerte) técnicamente imposible descubrir una contraseña . p>     

respondido por el Quandary 14.01.2015 - 08:59
fuente

Lea otras preguntas en las etiquetas