Generando un token específico de solicitud para una API

2

Tenemos una API de acceso abierto a través de una visualización de datos en un sitio web y una aplicación. Nos gustaría hacer que la vida de los posibles raspadores de datos sea un poco más difícil.

Lo primero que hicimos fue agregar un poco de regulación, pero en nuestro caso, la línea entre la tasa de solicitud legítima y maliciosa puede ser borrosa. Tampoco evita que los raspadores se tomen su tiempo.

Actualmente es fácil ver cómo se construyen nuestras solicitudes y crear otras nuevas, por lo que pensamos hacer esto más difícil generando algún tipo de hash utilizando los valores elegidos (parámetros de solicitud, hora actual, valor en cookie, etc.) en El lado del cliente y revisándolo del lado del servidor. El código que genera el token, naturalmente, debería estar oculto en el lado del cliente.

Entonces, la pregunta es, ¿qué tan útil puede ser esa protección? Parece que se reduce a cuánto podemos ofuscar a la generación de tokens. ¿Qué tan eficiente es esto, particularmente en javascript?

    
pregunta Jukurrpa 10.10.2017 - 04:21
fuente

1 respuesta

1

No es terriblemente útil, creo. El atacante ni siquiera tiene que entender su ofuscación: si tiene acceso a las rutinas (supongo que sí, ya que está en el cliente), el atacante puede robar su código y ejecutar los mismos parámetros para crear su hash.

Si el servidor sirve las páginas anteriores para las que se solicita esto, entonces puede agregar un token / nonce de una sola vez (un poco como un token CSRF ) a la API. Esto haría que la solicitud posterior sea prácticamente imposible de replicar sin solicitar primero la página anterior y obtener su propio token.

Pero incluso con esta estrategia, un raspador siempre podría volver a una página / URL de punto de entrada y reproducir la secuencia de solicitudes como si fueran un usuario normal. Es probable que este ataque sea válido sin importar qué ofuscación utilice, ya que no será distinguible para un usuario válido.

    
respondido por el Egret 10.10.2017 - 04:56
fuente

Lea otras preguntas en las etiquetas