¿Cómo es segura la clave API cuando todos pueden ver usando herramientas de desarrollador?

Su pregunta es incorrecta en un sentido más profundo.

Por favor abra su pasaporte. ¿Puedes ver las características de seguridad? Entonces, ¿cómo es eso seguro? Los ladrones también pueden ver eso ¿verdad?

Bueno, porque es muy difícil de duplicar.

Las claves no solo están ahí para encriptar, sino que también están allí por razones de autenticación. Es decir, que otras personas pueden encontrar con 100% de confianza que su servidor es el servidor correcto.

Las claves históricas eran simétricas, lo cual es una buena manera de decir que el proceso de cifrado y descifrado en efecto usa la misma clave.

Digamos que quiero enviarle algunos datos y solo nosotros dos tenemos que poder leerlos. entonces podemos decidir sobre algún tipo de cifrado y aplicarlo con la clave compartida. Recibe el mensaje, utiliza la clave en un proceso inverso y llega a un mensaje legible. Sin embargo, mi problema es que podrías compartir mi clave con otra persona. Y eso significa que de repente, sin mi conocimiento, otras personas pueden leer los mensajes que te envío.

Imagine un cifrado que depende de dos claves que funcionan juntas. Esta respuesta es demasiado corta para explicar completamente cómo funciona esto, pero si está familiarizado con el hash, tiene algo que ver con eso, el mecanismo de cifrado es unidireccional. Es decir, si lo cifro con la clave A, solo se puede descifrar con la clave a (complementaria a A). Así que ahora puedo enviarle una llave a todos en el mundo. Y mantenga la clave A privada. De qué sirve tal cifrado. ¿Todos pueden leerlo usando la tecla a? Si comprendiste esa pregunta, de repente también ves lo que ha sucedido. Si se puede descifrar con la clave ‘a’, entonces debe haber sido cifrada con la clave “A” … por lo tanto, debe haber llegado de mí.

Así es como funcionan las teclas privadas y públicas. Puede compartir su clave pública, siempre que mantenga su clave privada. Por lo tanto, su computadora en este momento podría tener varios miles de claves públicas. Si un mensaje dice que proviene de la persona C, entonces comprobar el encabezado con la clave pública ‘c’ lo probará o lo desmentirá.

Y es por eso que las API públicas en general también proporcionan una clave pública … no para el cifrado sino para certificar que proviene de una fuente confiable.

Las claves API de larga duración son normalmente solo para servicios de back-end (del lado del servidor) y no deben usarse en la interfaz.

Como mencionó, todos pueden ver las credenciales que están disponibles para el cliente, por lo que no se deben usar las sensibles aquí.

Cuando se necesita acceder a una API en el lado del cliente, normalmente requiere generar un token a corto plazo u otra forma de clave temporal. O, alternativamente, se puede utilizar un sistema basado en clave pública. La biblioteca JavaScript de Stripe para el procesamiento de pagos utiliza el enfoque basado en clave pública para comunicarse con el backend de Stripe de una manera que no comprometa las credenciales.

Como Joshua ha sugerido, usar las teclas de esa manera no es apropiado. En su lugar, debería emitir un token a corto plazo, que puede controlar / caducar / revocar.

Tal vez use una puerta de enlace para simplificar esto y administrar esto por usted (descargo de responsabilidad: trabajo en Tyk Open Source API Gateway, API Management Platform, Developer Portal and Analytics – Tyk – Tyk API Gateway y API Management)

James

Las claves API no son seguras. Obtiene seguridad a través de OAuth (o un inicio de sesión más básico) y SSL / TLS.