Gran parte de la Internet moderna depende de las API para funcionar. La seguridad de las API es el proceso de protegerlas de los ataques y las fugas de datos.
Después de leer este artículo podrás:
Contenido relacionado
¿Qué es una API?
Seguridad de aplicaciones web
Vulnerabilidad de día cero
¿Qué es una llamada de la API?
punto final de la API
Suscríbase a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar enlace del artículo
Una interfaz de programación de aplicaciones (API) es una forma de que una parte de software interactúe con otra parte de software. Si un programa o aplicación tiene una API, los clientes externos pueden solicitarle servicios.
La seguridad de las API es el proceso de protegerlas de los ataques. Al igual que las aplicaciones, las redes y los servidores pueden ser objeto de ataques, las API pueden ser víctimas de diferentes amenazas.
La seguridad de las API es un componente central de la seguridad de aplicaciones web. La mayoría de las aplicaciones web modernas se basan en las API para funcionar, y las API introducen un riesgo adicional en una aplicación al permitir que partes externas accedan a ella. Se puede comparar con un negocio que abre su oficina al público: tener más personas en las instalaciones, algunas de las cuales pueden ser desconocidas para los empleados del negocio, introduce un mayor riesgo. Del mismo modo, una API permite que personas ajenas a la empresa utilicen un programa, lo que introduce un mayor riesgo en la infraestructura del servicio API.
Las estrategias de seguridad de la API pueden ayudar a mitigar estos y otros riesgos.
Unas fuertes medidas de autenticación y autorización ayudan a garantizar que no se filtren los datos y que solo los clientes autorizados realicen solicitudes de API. La protección DDoS y la limitación de velocidad pueden acabar con los ataques DDoS. La validación de esquemas y el uso de un firewall de aplicaciones web (WAF) pueden bloquear las vulnerabilidades.
La limitación de velocidad pone un límite a la frecuencia con la que alguien puede repetir una acción dentro de un plazo determinado. Si un cliente de la API supera el número de solicitudes permitidas, la limitación de velocidad descartará o bloqueará sus solicitudes durante un periodo de tiempo.
La mitigación de DDoS ayuda a detener los ataques DoS y DDoS. En un ataque DDoS, un atacante intenta sobrecargar una API con muchas solicitudes en un período corto de tiempo. Con frecuencia, estas solicitudes proceden de varias fuentes diferentes.
La limitación de velocidad y la mitigación de DDoS son fundamentales para las API por un par de razones:
Para que un aprovechamiento de vulnerabilidad funcione, las solicitudes maliciosas a la API deben estar estructuradas de tal manera que provoquen que la API responda de una manera que no habían previsto sus creadores. Los desarrolladores de API pueden bloquear estas peticiones maliciosas de varias maneras. Dos de las más importantes que hay que conocer son:
El esquema de una API describe el comportamiento esperado de una misma: el tipo de solicitudes que debe recibir y el tipo de respuestas que debe proporcionar. Las solicitudes no válidas que no se ajusten a este esquema pueden hacer que una API se comporte de forma inesperada, lo cual puede provocar una filtración de datos. La validación del esquema identifica las solicitudes y respuestas no válidas. Al bloquear las respuestas no válidas, los desarrolladores de la API pueden evitar algunos tipos de ataques y ayudar a prevenir las filtraciones de datos.
Un WAF funciona como un firewall tradicional en el sentido de que bloquea algunas solicitudes y respuestas de la red, y permite el paso de otras. Lo hace basándose en un conjunto de reglas: si una solicitud o una respuesta infiringe una regla, o se ajusta a una regla, se bloquea. Un WAF se implementa frente a una API o una aplicación web, y supervisa el tráfico HTTP .
Es posible configurar reglas WAF que bloqueen los patrones de solicitud y respuesta que tienen como objetivo una vulnerabilidad. Las reglas WAF también pueden bloquear las solicitudes procedentes de ciertas direcciones IP, lo cual ayuda a detener los ataques de bots y otros atacantes.
La autenticación garantiza que las solicitudes de la API provengan de una fuente legítima. La autorización permite al servidor de la API saber si el cliente solicitante está autorizado a obtener los datos solicitados.
Supongamos que Alice construye una API y Bob crea una aplicación web que utiliza la API de Alice. Cuando la aplicación de Bob envía una solicitud de API a la API de Alice, adjunta a la solicitud una etiqueta que dice "esto es de Bob". Esto autentica la solicitud de Bob para que el servidor de la API de Alice sepa que debe tratar la solicitud como legítima.
El servidor de la API de Alice también comprueba qué privilegios tiene Bob. Si la solicitud de Bob es para datos que la API de Alice ha etiquetado como "Bob puede ver esto", el servidor atiende la solicitud. Sin embargo, la API de Alice puede tener una sección de datos etiquetada como "no es para Bob", y el servidor no debe atender una solicitud de esos datos cuando Bob sea el solicitante. Por eso es importante la autorización.
(En realidad, Bob adjuntaría una clave o alguna otra forma de autentificación a las solicitudes de la API, y no solo una etiqueta que diga "esto es de Bob.")
Hay varios métodos de autenticación para las API. Los más habituales son:
Al cliente se le asigna una clave: una cadena de caracteres única que solo él y el servicio API conocen. La clave se adjunta a cada solicitud de la API. El servidor de la API comprueba la clave cuando recibe una solicitud de la API para asegurarse de que proceda de un cliente autenticado.
El inconveniente de este método de autenticación es que, si se roba la clave, un atacante puede utilizarla para hacerse pasar por un cliente legítimo y así poder llevar a cabo diversos ataques. Es importante encriptar las solicitudes y las respuestas hacia y desde una API con un protocolo de encriptación como Transport Layer Security (TLS); de esta manera, la clave no queda expuesta en texto plano al recorrer Internet.
Las solicitudes de la API pueden utilizar las típicas credenciales de nombre de usuario y contraseña para la autenticación mediante un método llamado autenticación HTTP. En la autenticación HTTP, se codifica un nombre de usuario y una contraseña, y se añaden al encabezado HTTP de todas las solicitudes de la API. El servidor puede cotejar estas credenciales con las de los clientes permitidos para autenticar las solicitudes.
Este enfoque conlleva todos los desafíos que se asocian normalmente con las contraseñas: las contraseñas pueden perderse, filtrarse, ser robadas, adivinadas o compartidas con personas que no sean de confianza. Las contraseñas también son susceptibles de sufrir relleno de credenciales y ataques de fuerza bruta, entre otros.
En lugar de requerir la autenticación directamente del cliente, un servidor de la API puede obtener un token de autenticación de un servidor de autenticación de confianza mediante el uso del protocolo OAuth. Para utilizar la API, un usuario inicia sesión en un servicio de terceros en lugar de conectarse directamente a la API. Al igual que el método de nombre de usuario y contraseña, este método de autenticación es vulnerable al relleno de credenciales y a otros ataques.
TLS es el protocolo de encriptación que crea una conexión encriptada y autenticada entre el cliente y el servidor cuando se cargan las páginas web. TLS también puede verificar y autenticar ambos extremos de una conexión API.
En el TLS mutuo (mTLS), tanto cliente como servidor tienen un certificado TLS. Se autentican mutuamente utilizando estos certificados, asegurándose que ambos sean quienes dicen ser, sin necesidad de depender de contraseñas u otros métodos de autenticación.
Sin embargo, la implementación de mTLS puede ser un reto: todos los puntos de conexión de la API y los clientes necesitan certificados TLS legítimos, que pueden ser difíciles de aplicar y mantener.
El API Shield de Cloudflare habilita varias funciones de seguridad de la API desde un solo panel de control para protegerla de los riesgos de seguridad habituales de la API. API Shield incluye:
Más información acerca de API Shield o de soluciones de seguridad de API.
La seguridad de las API es el proceso de protegerlas contra los ataques y las fugas de datos. Garantiza que solo los usuarios previstos puedan acceder a servicios y datos específicos a través de la API, y mantiene las API operativas frente a ataques diseñados para sobrecargarlas o dejarlas fuera de servicio. La limitación de velocidad, la mitigación de DDoS, las reglas del WAF, la validación de esquemas y las prácticas de autenticación eficaces pueden ayudar a proteger las API.
La autenticación verifica la identidad de los usuarios de las API, y la autorización determina a qué datos o servicios pueden acceder esos usuarios. Juntas, ayudan a evitar el acceso no autorizado a los datos.
Algunos de los riesgos más comunes relacionados con la seguridad de las API son la explotación de vulnerabilidades, los ataques basados en la autenticación, los errores de autorización y los ataques de denegación de servicio (DoS/DDoS) que pueden interrumpir el servicio de las API para los usuarios legítimos.
La limitación de velocidad restringe el número de veces que un usuario puede utilizar una API en un periodo determinado, mientras que la mitigación de DDoS ayuda a absorber o bloquear grandes volúmenes de solicitudes maliciosas. Ambas ayudan a garantizar la disponibilidad de las API para los usuarios autorizados.
La validación de esquemas bloquea las solicitudes que no se ajustan al formato esperado de la API. Esto reduce la probabilidad de que una API se comporte de manera inesperada en respuesta a las solicitudes de los usuarios. Un WAF emplea reglas para bloquear las llamadas API maliciosas o sospechosas antes de que lleguen a la API.
Las API utilizan las claves API, las combinaciones de nombre de usuario/contraseña, los tokens OAuth o mutual TLS (mTLS) para verificar a sus usuarios.
La lista de las 10 principales vulnerabilidades de seguridad de las API de OWASP proporciona directrices de seguridad y una lista de las vulnerabilidades más comunes de las API, y ayuda a los desarrolladores de API a comprender y abordar los riesgos más críticos de la seguridad.
Los protocolos de encriptación como Transport Layer Security (TLS) protegen los datos en tránsito de las API, y evitan así que los atacantes puedan robar credenciales o información confidencial. Esto es especialmente crucial si la API emite claves API para la autenticación, ya que si una clave no está encriptada durante el tránsito los atacantes pueden copiarla y utilizarla para acceder a datos confidenciales. Además, a veces se utiliza mutual TLS (mTLS) para la autenticación con el fin de evitar que los atacantes suplanten a usuarios legítimos.
Las amenazas de día cero son ataques que explotan vulnerabilidades previamente desconocidas en las API. Las amenazas de día cero son especialmente difíciles de detectar y detener.