Hashing de contraseñas y soporte para su usuario

10

Recientemente hemos pasado a una mejor estrategia de almacenamiento de contraseñas, con todo lo bueno:

  • Las contraseñas se almacenan después de pasar por bCrypt
  • El usuario recibe un enlace de activación en la creación de la cuenta para confirmar la propiedad de la dirección
  • Olvidé mi contraseña sin una pregunta de seguridad, se envió un enlace a su correo electrónico.
  • El enlace caduca después de 24 horas, momento en el que deberán solicitar uno nuevo.
  • Si la cuenta se crea a partir de nuestro personal, se envía un correo electrónico con una contraseña segura aleatoria. Al iniciar sesión, el usuario debe restablecerlo a algo que no sabemos y que es bCrypt'd.

Ahora, esto está de acuerdo con la "mejor práctica", pero esto aumentó mucho nuestra cantidad de solicitudes de soporte de usuarios habituales que no entienden todo esto, solo quieren iniciar sesión.

A menudo recibimos solicitudes de usuarios que se quejan de:

  • Contraseña incorrecta (de la que necesitan restablecer a menudo la pegan con un espacio al final). Nos dicen qué están usando, pero no tenemos forma de decirles cuál es su contraseña real.
  • Diciendo que no están recibiendo el correo electrónico que les enviamos (activación, restablecimiento, etc.). Este no suele ser el caso, después de mucha solución de problemas, generalmente descubrimos que cometieron un error tipográfico en el correo electrónico, que no están verificando la cuenta de correo electrónico correcta o que simplemente estaban en la carpeta de correo no deseado.

Por supuesto, no podemos probarlo porque no tenemos la contraseña. Estamos registrando los intentos fallidos, pero también borramos la contraseña que usaron, ya que es probable que sea la contraseña utilizada para otra cuenta y no queríamos almacenarla en un archivo de registro de texto sin formato. Esto nos deja prácticamente sin nada para ayudarlos cuando reportan problemas.

Tengo curiosidad por saber cómo la mayoría de las personas lidian con problemas como estos.

jfrobishow
fuente
2
Además de ser un poco más descriptivo en los correos electrónicos que su sistema envía a los usuarios, no veo lo que podría hacer de manera diferente mientras se mantienen las mejores prácticas. Te hace desear poder abofetear a los estúpidos usuarios.
Bernard
1
Las personas son estúpidas, sus usuarios, más que la mayoría de los demás, ¿no veo la pregunta aquí?
8
Jarrod, solo estás insultando a tus usuarios. El único estúpido aquí eres tú. No logras comprender el nivel de conocimientos informáticos de tus usuarios. Sin ofender, hombre, pero estás escribiendo software para personas que no son fanáticos de las computadoras. Si no ve ninguna pregunta, probablemente significa que todos esos expertos en usabilidad deberían ser despedidos, porque en realidad no son necesarios. Es solo un problema con las "personas estúpidas", por lo que nosotros, los desarrolladores inteligentes, simplemente los prohibimos de la web y el problema desaparecerá :) Si alguien escribió un sistema que solo el autor puede usar, ¿no ve un problema?
Slawek
2
@Slawek: no, en serio, la gente es estúpida.
Bryan Boettcher
@JarrodRoberson, apenas son sus usuarios: cuando se trata de aplicaciones web públicas, eso es lo que generalmente obtienes. Dicho esto, nos guste o no , todavía requiere recursos de soporte y es una pregunta muy válida.
GrandmasterB

Respuestas:

7

Contraseña incorrecta (de la que necesitan restablecer a menudo la pegan con un espacio al final). Nos dicen qué están usando, pero no tenemos forma de decirles cuál es su contraseña real.

Se puede solucionar mediante la inclusión de un enlace con un GUID único que los registra y los obliga a restablecer la contraseña. No obligue al usuario a copiar y pegar. (Además, ¿por qué no eliminar espacios en blanco al final de la contraseña en su formulario?)

Diciendo que no están recibiendo el correo electrónico que les enviamos (activación, restablecimiento, etc.). Este no suele ser el caso, después de mucha solución de problemas, generalmente descubrimos que cometieron un error tipográfico en el correo electrónico, que no están verificando la cuenta de correo electrónico correcta o que simplemente estaban en la carpeta de correo no deseado.

Asegúrese de que su correo electrónico saliente esté libre de spam (tal vez configure cuentas de prueba en algunos servicios de correo comunes), registre cualquier cosa que ocurra y tal vez informe al usuario si intenta solicitar un nuevo restablecimiento (es decir, envíe un correo a johndoee @ gmail .com falló, usuario no encontrado, ¿lo deletreaste correctamente?). Además, sea claro para los usuarios sobre problemas de ortografía y spam.

Además, OpenID y otras autenticaciones de terceros también son una opción, como han dicho otros.

Macke
fuente
algunas personas ponen espacios en sus contraseñas?
soandos
Algunas personas cortan y pegan contraseñas generadas automáticamente e incluyen espacios al principio y / o finalizan accidentalmente. (Lea la pregunta.)
Macke
3

Yo diría que use un método de autenticación de terceros, como Facebook, OpenID, Google ... lo que sea apropiado para sus usuarios. Sin embargo, si sus usuarios no pueden recordar su contraseña, tal vez no puedan usar un sistema de autenticación de terceros ...

Dependiendo de su situación, es posible que pueda usar otro sistema, como los certificados de cliente SSL (definitivamente son difíciles de instalar para los usuarios finales, pero si se trata de una empresa y puede automatizar su instalación, es genial), Windows SSO, una aplicación móvil, etc.

alex
fuente
Los certificados de cliente son una idea horrible. Son inseguros y una pesadilla para solucionar de forma remota si algo sale mal. Sin embargo, Openid es una buena idea
Tom Squires
¿Cómo son inseguros los certificados?
Bernard
@bernard cualquiera que esté en esa PC tiene el certificado. También es bastante fácil de eliminar. Uno con un virus
Tom Squires
1
Estoy de acuerdo en que solo son tan seguros como la máquina en la que residen, pero ese es un problema completamente diferente.
Bernard
3

¿Necesitas estar haciéndolo? Lo primero que debe hacer es determinar qué está protegiendo y de quién lo está protegiendo. Tal vez no valga la pena el costo de las mejores prácticas, y tal vez las mejores prácticas ni siquiera detendrán a su atacante.

Si te enfrentas a la NSA y tienes algo que quieren, ríndete y haz que la vida de tus usuarios sea más fácil. Si tiene números de tarjeta de crédito, tendrá que soportar los problemas que requiere el nivel de seguridad requerido, porque hay malos que los quieren y gastarán dinero y tiempo para conseguirlos. Es el acceso a un álbum de fotos familiar, ¿necesitas toda esa seguridad?

Lea sobre los trabajos de Buce Scheiners (Secretos y mentiras) como un buen comienzo para comprender la seguridad.

Mattnz
fuente
3

Lo primero que salta a la vista es que sus correos electrónicos van a ser basura. Configurar el correo electrónico para que se reconozca como real no es trivial. Le sugiero que busque cómo evitar que su correo electrónico se marque incorrectamente (¿pregunta separada sobre SO?)

La segunda cosa que recomendaría es dar a sus usuarios un sitio web / aplicación de un solo clic que inicie la contraseña para recuperar correos electrónicos. Negarse a hacerlo de otra manera que no sea el correo electrónico, no es seguro y sienta un mal precedente.

Tom Squires
fuente
No es que el correo electrónico sea una forma particularmente segura de transmitir información confidencial. Si solo los usuarios habituales pudieran molestarse con GPG y las claves ssh ...
tdammers
@tdammers, estoy de acuerdo, no es tan seguro. Sin embargo, se ha convertido en la piedra angular de su identidad en línea (para bien o para mal). Actualmente no hay una mejor alternativa viable.
Tom Squires
Sí hay. Correo electrónico encriptado Lo uso todo el tiempo y me molesta que incluso las grandes corporaciones no se molesten en ofrecer cifrado de clave pública para correos electrónicos confidenciales. Ni siquiera es difícil de implementar. Me resulta extraño que existan leyes (al menos aquí en los Países Bajos) que hacen que SSL sea obligatorio para la información confidencial, pero al mismo tiempo, se considera aceptable enviar la misma información a través de SMTP simple.
tdammers
@tdammers No sé lo suficiente como para recomendarlo yo mismo. Sin embargo
Tom Squires el
2

El hecho de que estén dispuestos a llamarlo y decirle su contraseña en voz alta le dice que para estos usuarios, la contraseña y la información que protege no es tan importante. Nunca haría ninguna de esas cosas con mi contraseña bancaria. Pero hay una serie de sitios que exigen contraseñas para cosas que realmente no los merecen. Tengo una contraseña estándar que utilizo para todos ellos, y cuanto más "oye, esa no es una contraseña segura" o "te haremos una contraseña y te obligaremos a cambiarla regularmente" y así sucesivamente, menos quiero usar ese servicio Tendría una breve conversación con las personas de "valor comercial" en su vida para ver si, de hecho, simplemente mantenerlos en texto plano en la base de datos y enviarlos por correo electrónico a las personas que lo soliciten sería un mejor enfoque.

Si de hecho esto fuera tan seguro, podría intentar lo que hizo uno de mis clientes con el sistema que codificamos para ellos. Mientras habla por teléfono con la persona, vaya a la base de datos y cambie su dirección de correo electrónico a la suya. Luego vaya a la web y haga clic en Olvidé mi contraseña. Espere el correo electrónico y úselo para iniciar sesión. Utilizando el sitio web, cambie la contraseña a Contraseña u otra cosa que esté de acuerdo verbalmente con el cliente. Cambie su dirección de correo electrónico a su propia dirección y dígales "todo listo, ¡su nueva contraseña está activa ahora!" Cliente feliz y no tiene que explicarles lo que está sucediendo.

Kate Gregory
fuente
2
La modificación directa de la base de datos es una violación de seguridad en sí misma. Esto significa que puede hacerse pasar por cualquier usuario que use su sistema.
Bernard
3
Mis clientes tenían una aplicación de Windows con la que podían editar cualquier campo para cualquier usuario, por ejemplo, si recibían un fax que decía que ahora tenían un nuevo número de teléfono. Por supuesto que fue auditado. Por supuesto, cuando vi este procedimiento escrito pegado a la pared cerca del escritorio de soporte, NO estaba FELIZ. Pero llegué a aceptarlo, y hay una pista de auditoría que muestra lo que sucedió si alguien llama y se queja de que su contraseña se restableció sin su consentimiento. La cuestión es que no todo tiene que ser tan seguro. Y los usuarios te dicen que esto no tiene por qué ser así.
Kate Gregory
1
Desafortunadamente, la mayoría de los usuarios no saben nada mejor. Depende de los desarrolladores de aplicaciones de software aplicar las mejores prácticas.
Bernard
44
Estoy de acuerdo en que este es un gran agujero de seguridad. Y estoy de acuerdo en que puede ser la solución más adecuada. Sin embargo, parece increíblemente tonto que la atención al cliente tenga que cambiar temporalmente la dirección de correo electrónico del cliente para restablecer la contraseña de ese usuario: si va a permitir que la atención al cliente restablezca las contraseñas, simplemente déjelo hacerlo directamente.
John Bartholomew
44
También me gustaría señalar que revelar las contraseñas de texto sin formato que los usuarios han establecido (de hecho, almacenar las contraseñas en texto sin formato) es, en mi opinión, mucho peor que dar a la atención al cliente la capacidad de cambiar directamente las contraseñas de los usuarios.
John Bartholomew
2

El método de último recurso que utilicé en un sistema con usuarios muy analfabetos en el pasado fue dirigir al usuario a una pantalla donde se les dio un número de teléfono y un número de confirmación. Llamaron al número de teléfono, verificaron su identidad a través de medios manuales y luego leyeron la confirmación. la persona de soporte inició sesión en un sistema separado, ingresó el número y obtuvo un segundo número para devolver al cliente. el cliente usó el segundo código para continuar a la página de restablecimiento de contraseña. la versión del cliente de la página no podía ejecutarse desde las subredes del personal de soporte y la pantalla de soporte no podía ejecutarse desde los clientes.

no es a prueba de balas ya que una persona de soporte podría usar un vpn para ejecutar ambos extremos desde una ubicación, pero fue suficiente para la auditoría ya que la cuenta de soporte se registró como responsable de la actividad

Cuenta
fuente
-5

Tal vez mediante la implementación de reglas de seguridad que no son LOCAS. Al hacer esto, todo lo que obtienes es menos seguridad realmente, porque el sistema es tan difícil de usar que tus clientes te reevaluarán las contraseñas a ti y a sus amigos solo para que funcione.

¿No puedes enviarles enlaces NORMALES y luego la contraseña a continuación? Si el cliente de correo electrónico rompe el enlace, simplemente muestre el formulario con un campo "código de activación" ... "escriba el código de activación que tiene en el correo electrónico" ... 5 dígitos para que no confundan 0 con O, etc. 4 los dígitos están bien para las tarjetas de crédito y necesita una política tan complicada para un inicio de sesión simple? Si el código no funciona, ¿repite la comprobación con la cadena TRIMmed? Supongo que no lo hará menos seguro, ¿verdad? :)

Para mí también sucede a menudo ... hago doble clic en la contraseña y el espacio final se copia. Es increíble para mí ¿por qué Peple no puede resolver solo eliminar los caracteres blancos finales cuando la verificación falló y repetir el proceso? Entonces tal vez TOGGLE letter case para que compruebe si no presioné CL accidentalmente.

Lo has complicado demasiado. No es "restablecer contraseña" y "contraseña inicial" ... sino "Código de confirmación" y "Ingrese el número de confirmación que le enviamos al correo electrónico", "¿No tiene correo electrónico? Fue enviado a [email protected], verifique su spam nuevamente, ¿aún no lo tiene? Reenvíe su correo electrónico de confirmación ". En el cuerpo HTML un enlace. http://xxx.com/conf-12345-mymail-gmail-com.html . Ningún cliente de correo romperá esto.

Slawek
fuente
55
La política de seguridad que mencionó no solo no es "INSANE" sino que debe ser un requisito para todas las aplicaciones "SANE". Los enlaces como este enviados por correo electrónico tienen que caducar después de un tiempo para evitar que se restablezca la contraseña (ya sea al robar el enlace directamente o al tropezar con un algoritmo asistido por computadora). Sin embargo, las contraseñas probablemente deberían recortarse antes de validarse. Los usuarios SON estúpidos. Es la ley. La respuesta no es reducir nuestras medidas de seguridad, sino tomar medidas proactivas para ayudar a garantizar que nuestros usuarios comprendan los procedimientos adecuados.
Dalin Seivewright
77
-1. Esta es una forma sensata de hacerlo, que utilizan la mayoría de los sitios. Si publico una "contraseña olvidada" en un sitio y recibo un correo electrónico con mi contraseña en texto plano, cierro mi cuenta.
Matt Grande