Pregunta

Estoy bastante seguro de que la respuesta de lo que voy a preguntar es no, pero tal vez alguien pueda darme una idea diferente, así que estoy preguntando de todos modos.

Estoy desarrollando un panel de control que obtiene información de un servicio web de terceros a través de una llamada API. Podría hacer una llamada con Ajax que devuelve el resultado en milisegundos en el navegador, pero estaría exponiendo la clave API de este servicio. A pesar de que esta es una intranet con acceso restringido, un empleado podría oler y obtener la clave de API privada con solo ver la ventana de actividad de Safari, por ejemplo. Los empleados son confiables, pero no quiero arriesgar mi seguridad de desarrollo en solo confiar.

Lo que estoy haciendo ahora es unir un PHP que realiza la llamada con una llamada de curl, pero tarda alrededor de 2 o 3 segundos en hacerlo: no el PHP en sí mismo, el alojamiento compartido va al servidor de terceros y viceversa.

¿Hay alguna manera de hacer que el navegador haga la solicitud directamente a la API sin exponer la clave privada? Creo que, por definición, es imposible, pero estoy compartiendo el escenario, así que tal vez alguien tenga una mejor idea (estoy tratando de evitar el caché porque la información obtuvo cambios por el segundo)

No ser el problema, tengo una duda relacionada con esto: si hago la llamada API a través de Curl en Mac OS Terminal o en un Apache local, toma como 12 segundos cada vez obtener el resultado, pero un navegador en la misma computadora y conexión Lo consigue en milisegundos. No estoy muy familiarizado con cómo Curl funciona internamente, pero Curl es un mecanismo lento o no funciona bien en mi Mac.

Gracias

¿Fue útil?

Solución

No, dado que el código JavaScript se envía y se ejecuta en la máquina del cliente, no hay forma de no exponer la clave API de alguna manera. Cifrar/ofuscarlo sería inútil, ya que un usuario bien informado podría usar un espectador/paquete de encabezado para extraer la clave de texto sin formato de las solicitudes de API de todos modos.

La única forma de no exponer la clave para el usuario no permite que el usuario lo obtenga, lo que significa representar las solicitudes.

Otros consejos

No, cuando el navegador solicita el servicio, el usuario siempre puede oler la clave. Entonces, usar PHP como proxy es una buena solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top