Modelo de diseño de API - Cifrado del lado del cliente

6

Actualmente estoy diseñando un modelo de API para usar. Un usuario tendrá una 'secret_api_key' y una 'public_api_key'. Enviarán una solicitud a mi servidor con la clave pública, los datos del formulario y luego un hash. El hash es el formulario de datos cifrados con la 'secret_api_key'.

Esto es para que el servidor vuelva a crear este hash ya que conoce el 'secret_api_key' y si los hashes son los mismos, entonces acepte la solicitud, de lo contrario, niegue.

Mi problema es que si alguien hiciera esto usando JavaScript, entonces tendrían que cifrar este 'en movimiento' en el navegador, lo que significa que necesitarán la 'secret_api_key' para hacerlo todo. Pero el 'secreto_api_clave' está destinado a mantenerse alejado de los ojos del público, por lo que cualquier persona podría mirar el script y ver la clave secreta.

¿Es esta una forma incorrecta de hacerlo? Sinceramente, no puedo pensar en una forma en la que puedas usar mi API en un navegador usando JavaScript (que sería el método principal en el que las personas usarían mi API)

Sé que con OAuth usted obtiene un 'access_token' que acaba de enviar con una solicitud, ¿seguramente alguien podría usar un sniffer de tráfico y reenviar las solicitudes con el mismo token de acceso? ¿O funciona OAuth de manera diferente?

Cualquier ayuda o sugerencia sería muy apreciada.

Gracias.

    
pregunta Tom O 27.11.2012 - 14:08
fuente

1 respuesta

1

Necesitaría una clave de nivel de sesión que podría asignarse al javascript no confiable. Básicamente, un sitio que ejecute la API tendría que tener la capacidad de solicitar una sesión individual para cada uno de los usuarios desde su clave de API y luego la sesión del usuario tendría que usar esa clave. Esto permite que se mantenga la confianza entre usted y el servidor que aloja el contenido, a la vez que le permite al usuario realizar operaciones basadas en la clave del servidor sin divulgarla.

    
respondido por el AJ Henderson 27.11.2012 - 17:55
fuente

Lea otras preguntas en las etiquetas