Visión general:
Mi empresa ha desarrollado una API de tasa limitada. Nuestro objetivo es doble:
- R: Cree un ecosistema de desarrolladores sólido en torno a nuestro producto.
- B: Demuestre el poder de nuestra API usándola para impulsar nuestra propia aplicación.
Aclaración: ¿Por qué el límite de tasa?
Limitamos nuestra API porque la vendemos como una adición a nuestro producto. El acceso anónimo a nuestra API tiene un umbral muy bajo para las llamadas API por hora, mientras que a nuestros clientes pagos se les permite más de 1000 llamadas por hora o más.
El problema:
Nuestra API de tasa limitada es excelente para el ecosistema de desarrolladores, pero para que podamos probarla, no podemos permitir que se restrinja a la misma limitación de tasa. El front-end de nuestra API es todo JavaScript, que realiza llamadas Ajax directas a la API.
Entonces la pregunta es:
¿Cómo se asegura una api para que se pueda eliminar la limitación de velocidad en los lugares del proceso para eliminar dicha limitación de velocidad no se pueda falsificar fácilmente?
Soluciones exploradas (y por qué no funcionaron)
Verifique la referencia con el encabezado del host. - Defectuoso porque el referente se falsifica fácilmente.
Use un HMAC para crear una firma basada en la solicitud y un secreto compartido, luego verifique la solicitud en el servidor. - Defectuoso porque el secreto y el algoritmo se determinarían fácilmente examinando el JavaScript frontal.
Aproveche la solicitud y firme la solicitud en el proxy: aún tiene fallas, ya que el propio proxy expone la API.
La pregunta:
Estoy mirando a las mentes brillantes de Stack Overflow para presentar soluciones alternativas. Como resolverías este problema?