¿Cómo solicitar de forma segura las contraseñas del cliente como firma de consultoría?

41

En mi trabajo como desarrollador, a veces necesito un combo de nombre de usuario / contraseña del cliente para asegurarme de que la configuración de los servicios de terceros sea correcta para trabajar con el sitio web / aplicación que estamos creando. P.ej. un proveedor de pagos que utilizamos en el sitio web de un juego.

¿Cuál sería la buena manera de solicitar su nombre de usuario y contraseña para que se mantenga seguro? Si les envío un correo electrónico, seguro, solo me enviarán un correo electrónico de texto sin formato con la contraseña, pero que no es seguro .

ACTUALIZACIÓN:

Veo que mi pregunta se entendió un poco, por lo que agregaré un ejemplo:

Supongamos que soy un desarrollador para CoolSoft, una compañía de software. Otra compañía (llamémoslos Games, Inc.) quiere que creemos un sitio web para ellos. Este sitio web utilizará servicios de terceros para el pago y la asistencia al cliente con los que necesitamos integrarnos. Games, Inc. crea cuentas con el proveedor de pagos y el proveedor de asistencia al cliente. Pero no son totalmente técnicos y debemos tener sus credenciales para establecer las URL de devolución de llamada correctas, etc. ¿Cómo pueden enviarnos su contraseña de forma segura para que podamos corregir la configuración de sus cuentas (nunca nos reunimos en persona)? / p>     

pregunta Wim Deblauwe 23.06.2016 - 13:45
fuente

8 respuestas

147

No lo haces.

Cuando enseña a los usuarios a dar su nombre de usuario y contraseña a alguien, los entrena para ser vulnerables a los ataques de phishing u otros ataques de ingeniería social.

En su lugar, diseñe el sistema de manera que un administrador pueda ver y editar estas configuraciones sin requerir las credenciales de los usuarios.

Cuando se encuentra en una situación en la que realmente necesita ver cosas desde la perspectiva del usuario para solucionar un problema, pídale que escriba la contraseña y luego permita que le muestren el problema. Esto se puede hacer en persona o con una herramienta de administración remota.

Cuando se encuentra en una situación en la que el cliente tiene las credenciales que necesita en su aplicación para integrarse con una solución de terceros, desarrolle su aplicación de manera que un usuario no técnico tenga una interfaz de usuario fácil de usar para configurar estas credenciales. . Lo necesitará de todos modos, en caso de que el cliente necesite cambiarlos y no esté disponible.

El usuario no tendrá que ingresar esto hasta que la aplicación se despliegue en sus propios servidores. Durante el desarrollo, debe usar una cuenta de prueba en su extremo para interactuar con terceros. Definitivamente no desea causar ningún costo a su cliente porque realizó algunas pruebas en las interfaces de pago de terceros que no funcionaron como esperaba.

    
respondido por el Philipp 23.06.2016 - 14:05
fuente
20

Existen numerosos "administradores de contraseñas de equipo" que permiten a los equipos compartir, cambiar y revocar el acceso a las credenciales. La mayoría paga (o es gratis para equipos pequeños), pero esta es probablemente la mejor manera de hacerlo. Por lo general, proporcionan cifrado, así como control de acceso sobre el acceso a credenciales específicas.

    
respondido por el schroeder 23.06.2016 - 14:02
fuente
13

La única opción viable que veo (que aún no se ha mencionado, es impar) es tener la (s) cuenta (s) de configuración del cliente con los permisos adecuados para que usted use en estos sistemas / servicios de Internet. De esta manera, ellos manejan las relaciones con los proveedores y el pago, pero usted tiene cuentas que tienen el acceso que necesita.

Como decía la respuesta de Phillip , simplemente no solicita ni participa en el intercambio de contraseñas. Es simplemente malo, ya que te estás poniendo en una posición para que te culpen si algo sale mal cuando alguien más usa la cuenta compartida. ("Sé que mis empleados nunca harían algo así, y usted es la única gente con la que compartimos la contraseña, por lo que debe ser algo que uno de usted haya hecho. ! ")

    
respondido por el HopelessN00b 23.06.2016 - 17:08
fuente
12

Resumo la situación como sigue

  • necesita acceso a un servicio de terceros con la cuenta de su cliente
  • reunirse en persona no se logra fácilmente
  • no es deseable una solución que implique que el cliente instale software o siga un procedimiento complejo

Creo que la mejor solución sería: enviar una nueva contraseña PARA ELLOS

Usted les envía una contraseña de forma segura y les da instrucciones (¿por teléfono?) para que establezca la contraseña en sus cuentas de manera temporal a la contraseña propuesta. - Luego puedes usarlo para iniciar sesión en la página. Y cuando haya terminado, pueden restablecer su contraseña al valor original.

Una forma fácil sería un enlace de una sola vez en el correo, que lleva a una página que muestra la contraseña. El cliente puede hacer clic en él, copiar la contraseña. Y un atacante no podrá acceder al mismo enlace de contraseña. (De lo contrario, un ataque MitM dirigido con el cambio del contenido del correo aún sería posible y podría mitigarse firmando el correo)

También puede decirles la contraseña temporal por teléfono, la escriben y cambian la contraseña de su cuenta temporalmente a la que usted les dice.

Este camino hacia atrás tiene varios beneficios:

  • Su cliente puede cumplir la regla "Nunca comparta su contraseña"
  • Puede elegir una forma segura de transmitir la contraseña, no tiene que enseñar a su cliente de una manera segura.
  • Su cliente tiene el control de otorgar y revocar su acceso
respondido por el Falco 24.06.2016 - 10:59
fuente
6

Hay literalmente toneladas de soluciones para transmitir datos (por ejemplo, credenciales) de forma segura.

  • Si el cliente admite el cifrado PGP / GPG, puede intercambiar claves públicas y cifrar los correos electrónicos
  • También hay empresas que se especializan en SecureMail (ZixCorp) o puedes comprar el tuyo (Cisco Ironport).
  • Si tiene un sitio de colaboración (por ejemplo, el portal del cliente para el cliente), pueden cargar las credenciales en el portal. FYI Alfresco es una aplicación freeware que hace un buen trabajo de esto.
  • Aunque el contacto humano está fuera de discusión, ¿puedes enviar mensajes de texto? Tal vez puedan enviar un mensaje de texto de la contraseña y proporcionar el nombre de usuario a través de otro canal.
  • Si todo lo demás falla, las señales de humo y el correo postal son todavía una cosa, pero los métodos anteriores son los vectores más comunes.
respondido por el HashHazard 23.06.2016 - 14:02
fuente
6

Manténgalo simple, pero solo use dos formas de comunicación. Por ejemplo, en un correo electrónico que solicita credenciales, pídales que solo respondan con un nombre de usuario y luego envíen una contraseña temporal a su número. Tan pronto como sea posible después de obtener las credenciales, cambie la contraseña temporal a otra cosa.

Sí, en teoría, alguien podría ver el correo electrónico y piratear el SS7 para obtener la contraseña, pero si pueden hacerlo antes de que pueda cambiar la contraseña temporal, de todos modos se le pwned.

    
respondido por el Bill 23.06.2016 - 17:19
fuente
0

No debe tener devoluciones de llamada rígidas que respondan a un nombre de usuario / contraseña específico. Si está tratando con herramientas de terceros, debería configurar esas cuentas para ellos e interactuar con esas herramientas a través de tokens de API. Mucho mejor que crear la cuenta y al final asignar cualquier credencial de cuenta al cliente.

    
respondido por el sidewaiise 25.06.2016 - 03:54
fuente
0

Es extraño que nadie haya mencionado OAuth , que, a primera vista, es la solución perfecta para el problema, como se explica después la actualización.

    
respondido por el bortzmeyer 26.06.2016 - 21:18
fuente

Lea otras preguntas en las etiquetas