Evitar el uso malintencionado de usuarios con tokens de acceso

1

Tengo una página web que ejecuta una aplicación JavaScript y un servicio web contra el que la aplicación realiza solicitudes HTTP PUT. El servicio usa tokens de acceso para verificar la identidad del usuario, pero ahora estoy hablando mal de cómo evitar que los usuarios autorizados utilicen la API de manera inadecuada. Es decir. ¿Qué es detener a un usuario malintencionado de simplemente inspeccionar el tráfico saliente en su navegador, copiar la url del servicio y su token de acceso, y usarlo para llamadas de spam contra el servicio?

¿Existe una forma estándar de prevenir este tipo de uso indebido? Pensé que podría ocultar o cifrar los tokens del usuario para que no los vean, pero no parece que sea posible.

¡Salud!

    
pregunta C. Russell 27.07.2017 - 00:48
fuente

2 respuestas

0
  

I.e. ¿Qué es detener a un usuario malintencionado de simplemente inspeccionar el tráfico saliente en su navegador, copiar la url del servicio y su token de acceso, y usarlo para llamadas de spam contra el servicio?

Nada. Un usuario tiene control total sobre la aplicación cliente. No puede evitar que extraigan el token, modifiquen el código JS o simplemente creen su propio cliente personalizado. Incluso si ofuscas el código, pueden capturar las solicitudes a la API y reproducirlas más tarde.

  

¿Existe una forma estándar de prevenir este tipo de uso indebido?

La forma común de proteger las API contra el abuso es la limitación de velocidad. Por ejemplo, puede limitar la cantidad permitida de solicitudes por usuario durante un período de tiempo determinado o establecer límites en función de las direcciones IP. Sin embargo, no puede evitar que utilicen la API desde fuera de su aplicación.

También vea:

respondido por el Arminius 27.07.2017 - 03:39
fuente
0

La forma estándar es "reproxy" la llamada a la API externa a través de su servidor. Esto también se usa para proporcionar integración de API que no sea CORS, ocultar claves de API secretas, permitiendo cambios en el proveedor de servicios sin refactorizar el código del cliente, así como también seguridad.

Dado que todas las llamadas ahora pasan por su servidor, puede cumplirlas o rechazarlas según sea necesario, según la autenticación, la limitación de velocidad o prácticamente cualquier otro tipo de regla que pueda soñar y codificar.

También puede implementar tokens y sincronizaciones de aplicaciones para que solo su aplicación pueda hacer uso de la "nueva" API que (re) está sirviendo. Sin tener que volver a hacer proxy, debe confiar en la honestidad y la legalidad del usuario.

    
respondido por el dandavis 27.07.2017 - 05:50
fuente

Lea otras preguntas en las etiquetas