seguridad de API donde el servidor también está del lado del cliente

0

Tengo una aplicación de escritorio que crea y almacena una buena cantidad de datos (en su mayoría, no a través de los comentarios tradicionales de los usuarios); Principalmente de naturaleza estadística.

Actualmente, la mayoría de los datos son accesibles solo a otras aplicaciones que he escrito yo mismo, y no están expuestas al usuario sino a través de estas aplicaciones.

Estoy considerando permitir el acceso de terceros a estos datos a través de una API REST o similar, pero en este caso el "servidor" se ejecutaría en la misma máquina que el cliente (u otra máquina en la misma LAN). a lo sumo).

Sin embargo, dado que este acceso está destinado a monetizarse, quiero tener algún tipo de autenticación para permitir que los clientes específicos accedan a subconjuntos específicos de los datos, en lugar de proporcionar permisos generales.

(Por lo tanto, el objetivo no es la autenticación del usuario, sino la autenticación de la aplicación del cliente; en el sentido humano, todos los datos son para un usuario, pero solo deben ser accesibles a través de aplicaciones autorizadas).

Obviamente, dado que todo está funcionando en el lado del cliente, básicamente ya lo he perdido (un usuario suficientemente determinado no tendría ningún problema en extraer y falsificar credenciales, y AFAIK es literalmente imposible evitar esto), pero ¿cuál sería la ¿Mejores prácticas para proporcionar un nivel razonable de seguridad contra usuarios insuficientemente determinados?

La mayoría de las recomendaciones habituales para la autenticación de API REST (SSL, OAuth, etc.) realmente no parecen ser aplicables ya que asumen un servidor separado y seguro. (Y a SSL le preocupa principalmente la validación del servidor).

    
pregunta Miral 17.07.2017 - 02:16
fuente

1 respuesta

1

Puede utilizar certificados de cliente que se generan desde una fuente externa.

Cuando se está configurando un servicio de terceros, uno de los pasos debe ser ponerse en contacto con un servidor autorizado para ver qué permisos debería tener y si el usuario ha pagado por la fuente de contenido. En ese paso, también puede generar un certificado ssl de cliente y firmarlo con una autoridad de certificación interna. Luego, cuando un cliente de terceros se conecta a la API en el escritorio, todo lo que debe hacer es presentar su certificado y la API puede verificar el hash de las autoridades de firmas para verificar su autenticidad y otorgar los permisos establecidos.

La función que verifica el certificado debe ser lo más cercana posible al código nativo, ya que es trivial editar un archivo interpretado para que siempre devuelva verdadero para una verificación de certificado.

    
respondido por el zzarzzur 19.07.2017 - 12:46
fuente

Lea otras preguntas en las etiquetas