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 zero-day
¿Qué es una llamada de la API?
Punto final de la API
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el 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 Gateway 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 Gateway incluye:
Más información sobre API Gateway o las soluciones de seguridad de las API.