¿Qué debemos tener en cuenta al abrir nuestros datos a un tercero?

1

Tenemos una base de datos con imágenes (entre otras cosas). Tenemos algunas aplicaciones que pueden conectarse a esta base de datos a través de un servicio web php (envíe solicitudes https a un archivo php para recuperar material de la base de datos y escribir cosas nuevas en la base de datos).

Ahora un tercero quiere trabajar junto con nosotros. Tienen su propio portal web donde sus usuarios tienen que iniciar sesión. Sus usuarios pueden ver algunos datos básicos, y la idea es que los usuarios que son nuestros usuarios también puedan ver las imágenes de nuestra base de datos desde su portal.

No le daremos a este tercero acceso a nuestra base de datos, pero sí queremos exponer las imágenes, dado que el usuario ha iniciado sesión. Por lo tanto, hemos estado haciendo una lluvia de ideas y llegamos a la conclusión de que de cualquier manera vamos a hacer esto, va a ser un gran problema de seguridad potencial si no lo hacemos a la perfección.

Pensamos en crear otra base de datos y sincronizarla cada hora aproximadamente con nuestra base de datos en vivo. Luego queremos crear otro servicio web, para que el tercero pueda acceder a los datos en esta segunda base de datos. Pero ahora todavía no hay manera de asegurarnos de que el usuario haya iniciado sesión realmente, tampoco tenemos acceso a la base de datos de terceros, por lo que no podemos verificar esto.

¿Alguien puede explicar lo que tenemos que tener en cuenta para un proyecto como este? ¿Nos saltamos algo? ¿Es incluso posible hacer esto 100% seguro?

    
pregunta Kevin 19.12.2014 - 16:04
fuente

2 respuestas

2

Existe un marco que existe específicamente para habilitar este tipo de escenario. Se llama OAuth 2.0 . Lo que desea hacer es tener una API que exponga los recursos de los propietarios de los recursos (sus usuarios) (sus imágenes) para que el cliente (el tercero) los consuma con el permiso de los propietarios de los recursos individuales.

Entonces, en este modelo, usted se convierte en un proveedor de OAuth 2.0, y el tercero implementa un cliente de OAuth. Luego, los usuarios que son usuarios de ambos servidores pueden autorizar al cliente a acceder a sus imágenes, y al tercero se le dará un token de acceso que les permitirá recuperar las imágenes de su API para los usuarios que les hayan otorgado dicho acceso.

No sé que la segunda base de datos tenga algún propósito. Dado que en cualquier caso va a estar exponiendo el acceso a través de un servicio en lugar de otorgar acceso directo a la base de datos, la segunda copia de la base de datos simplemente me parece una complejidad adicional innecesaria.

    
respondido por el Xander 19.12.2014 - 17:08
fuente
1

Primero que todo: ¿Ya ha consultado con su departamento legal o con un abogado calificado si tiene permiso para hacerlo de acuerdo con su política de privacidad y sus leyes locales de privacidad? Cuando no lo hayas hecho, debes hacer esto primero.

El principal problema de seguridad es averiguar cuáles de los usuarios de sus también son sus . Esto no es tan fácil como parece, porque "Kevin" en SiteA y "Kevin" en SiteB podrían ser personas completamente diferentes. Puede intentar comparar otra información personal entre sí, pero esto no es confiable y 2. sería una violación de la privacidad.

Cuando los usuarios adquieren las imágenes de un javascript del lado del cliente a través de un servicio web que se ejecuta en su dominio, puede reconocerlas por sus cookies de inicio de sesión. Pero eso solo funciona en un contexto completamente del lado del cliente. Cuando su servidor debe consultar las imágenes, esto no funcionará.

Una alternativa sería permitir que los usuarios en su sitio web vinculen manualmente sus cuentas con las de su sitio web. Cuando los usuarios están en SiteA, hacen clic en "Permitir que SiteA importe mis imágenes de SiteB" ¹. Cuando lo hacen, SiteA se conecta a SiteB para solicitar un token único para ese usuario. Luego, el usuario obtiene un enlace con ese token que los envía a SiteB. Cuando hacen clic en ese enlace, deben iniciar sesión (cuando aún no tienen una cookie de inicio de sesión) y recibir un mensaje "¿Desea compartir sus imágenes con su nombre de NOMBRE en el sitio A?" ¹ Cuando confirman, tienen ambos establecieron un enlace entre las dos cuentas y también obtuvieron el consentimiento de los usuarios para compartir las imágenes. Ahora puede permitir que SiteA solicite cualquier imagen para ese usuario.

¹) Verifique la redacción exacta de estas indicaciones con su departamento legal / abogado para asegurarse de que obtiene el consentimiento de los usuarios que necesita de acuerdo con las leyes y regulaciones locales. La ley de copyright también es un problema en este caso porque copia contenido generado por el usuario a un tercero.

    
respondido por el Philipp 19.12.2014 - 16:23
fuente

Lea otras preguntas en las etiquetas