Almacenar una contraseña de forma segura como parte de un servicio web

5

Supongamos que estoy creando un servicio web público que necesita escribir archivos en una cuenta de Dropbox (solo un ejemplo). Necesita escribir archivos en una cuenta central, no una por usuario. Este servicio necesita acceder a la cuenta de Dropbox con una contraseña. Quiero que el servicio web pueda acceder a mi cuenta de Dropbox sin exponer la contraseña públicamente. ¿Cómo podría lograr esto? Si cifro la contraseña en un archivo separado, la clave de cifrado aún debería estar en el archivo público que contiene el código del servicio.

    
pregunta Luke Taylor 16.02.2016 - 20:40
fuente

1 respuesta

10

Si esto es realmente para Dropbox, no lo hagas. Dropbox tiene una API y OAuth. Utilice el proveedor OAuth de Dropbox para obtener un token de OAuth para el usuario, y puede almacenarlo. No tome, o almacene las credenciales del usuario.

Si es para un servicio que no expone a un proveedor de autorización, y realmente necesita almacenar las credenciales en nombre del usuario, debe hacerlo con mucho cuidado. Preferiblemente, se almacenarán en un servicio separado, y solo las sesiones autenticadas se presentarán en su aplicación principal para reducir el área de superficie de ataque. Las credenciales deben almacenarse en un formato cifrado, y la clave de cifrado debe almacenarse de la forma más segura posible, preferiblemente en un HSM.

Cuando tiene datos tan valiosos como las credenciales de autenticación para servicios de terceros, su deber de cuidado para proteger esos activos es muy, muy alto. La defensa en profundidad será crítica, al igual que limitar el acceso, el registro y el monitoreo, y el modelado detallado de amenazas para comprender el alcance de su superficie de ataque.

    
respondido por el Xander 16.02.2016 - 20:51
fuente

Lea otras preguntas en las etiquetas