modificación de solicitud API

1

Estoy creando una API que devuelve datos sobre empresas Múltiples aplicaciones accederán a la API, algunas de estas aplicaciones tendrán acceso a una compañía, otras a múltiples compañías. Cuando se recibe una solicitud de datos, también se envía una ApplicationApiKey. Verifico si el ApiKey tiene acceso a los datos de la empresa. Esto funciona muy bien para las aplicaciones que tienen acceso permitido a una compañía, sin embargo, una ApplicationApiKey puede tener acceso a varias compañías.

Un usuario de Company1 podría iniciar sesión en la aplicación y enviar una solicitud a enlace . El usuario podría actualizar el parámetro del ticket a un número diferente. Este podría ser el número de boleto de una compañía diferente a la que la Aplicación está autorizada para acceder, pero el usuario que inició sesión no lo está. ¿Cómo evito que los usuarios modifiquen esta URL a un número de ticket de una compañía diferente?

Estos son mis pensamientos hasta ahora:

  1. Es suficiente tener acceso a mi API solo a través de SSL
  2. Pida al desarrollador de la aplicación que cifre los parámetros. enlace , esto parece factible para las solicitudes GET, pero ¿qué ocurre con los POST?
  3. No es mi problema, depende del desarrollador de la aplicación (hasta que suceda algo cuando sucederá)
  4. Todo el proceso es incorrecto, debería ser una clave de API por empresa (pero esto no es posible ya que las aplicaciones pueden agregar y eliminar usuarios de diferentes compañías)

Gracias por cualquier respuesta

    
pregunta Don 19.08.2014 - 00:18
fuente

1 respuesta

3

Su problema es un problema de autorización.

  1. SSL no tiene nada que ver con su problema. Si bien debe usar SSL para proteger sus datos de fugas y manipulaciones, no le ayudará de ninguna manera resolver sus problemas de autorización.
  2. El cifrado de los parámetros es insuficiente. Evitará que el usuario común manipule los parámetros, pero no impedirá que ningún atacante sofisticado realice una ingeniería inversa en su aplicación cliente y extraiga la clave de cifrado, por lo que obtendrá la capacidad de manipular los parámetros incluso si están cifrados.

En mi humilde opinión, todo su concepto de autorizar una aplicación es incorrecto. Si realmente le importa la violación de datos entre compañías, debe implementar la autorización en el nivel de usuario. Cada usuario de la aplicación debe autenticarse y usted debe tener algún mecanismo para autorizar al usuario a acceder a los datos de la empresa.

    
respondido por el aviv 19.08.2014 - 07:13
fuente

Lea otras preguntas en las etiquetas