Grande parte da internet moderna depende de APIs para funcionar. A segurança de APIs é o processo de proteção das APIs contra ataques e violações de dados.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
O que é uma API?
Segurança de aplicativos web?
Exploração de dia zero
O que é uma chamada de API?
endpoint de API
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
Uma interface de programação de aplicativos (API) é uma forma de um software interagir com outro software. Se um programa ou aplicativo possui uma API, clientes externos podem solicitar serviços dela.
A segurança da APIs é o processo de proteção das APIs contra ataques. Assim como aplicativos, redes e servidores podem estar sujeitos a ataques, as APIs podem ser vítimas de várias ameaças diferentes.
A segurança de APIs é um componente essencial da segurança de aplicativos web. A maioria dos aplicativos web modernos depende de APIs para funcionar e as APIs apresentam riscos adicionais a um aplicativo, permitindo que terceiros o acessem. Uma comparação é uma empresa que abre seu escritório ao público: ter mais pessoas nas instalações, algumas das quais podem ser desconhecidas dos funcionários da empresa, apresenta maior risco. Da mesma forma, uma API permite que pessoas de fora usem um programa, introduzindo mais riscos à infraestrutura do serviço de API.
As estratégias de segurança de APIs podem ajudar a mitigar esses e outros riscos.
Medidas de autenticação e autorização fortes ajudam a garantir que os dados não vazem e apenas clientes autorizados façam solicitações de API. A proteção contra DDoS e a limitação de taxa podem encerrar ataques DDoS. A validação de esquema e o uso de um firewall de aplicativos web (WAF) podem bloquear explorações de vulnerabilidades.
A Limitação de taxa limita a frequência com que alguém pode repetir uma ação dentro de um determinado período de tempo. Se um cliente de API exceder o número de solicitações permitidas, a limitação de taxa descartará ou bloqueará outras solicitações por um período de tempo.
A mitigação de DDoS ajuda a parar ataques DoS e DDoS. Em um ataque DDoS, um invasor tenta sobrecarregar uma API com muitas solicitações em um curto período de tempo. Muitas vezes, essas solicitações vêm de várias fontes diferentes.
A limitação de taxa e a mitigação de DDoS são fundamentais para as APIs por alguns motivos:
Para que uma exploração de vulnerabilidade funcione, as solicitações de API maliciosas devem ser estruturadas de forma que façam com que a API responda de uma maneira que seus arquitetos não pretendiam. Existem várias maneiras pelas quais os desenvolvedores de API podem bloquear essas solicitações maliciosas. Duas das mais importantes a saber são:
O esquema de uma API descreve o comportamento esperado de uma API: o tipo de solicitações que deve receber e o tipo de respostas que deve fornecer. Solicitações inválidas que não estão em conformidade com esse esquema podem fazer com que uma API se comporte de maneira inesperada, resultando potencialmente em vazamento de dados. A validação do esquema identifica solicitações e respostas inválidas. Ao bloquear respostas inválidas, os desenvolvedores de API podem evitar alguns tipos de ataques e ajudar a evitar vazamentos de dados.
Um WAF funciona como um firewall tradicional, pois bloqueia algumas solicitações e respostas de rede e permite a passagem de outras. Ele faz isso com base em um conjunto de regras: se uma solicitação ou resposta viola uma regra ou está em conformidade com uma regra, ela é bloqueada. Um WAF é implantado na frente de uma API ou de um aplicativo web e monitora o tráfego HTTP.
É possível configurar regras WAF que bloqueiam padrões de solicitações e respostas, que visam uma vulnerabilidade. As regras WAF também podem bloquear solicitações de determinados endereços de IP, o que ajuda a parar ataques de bots e outros invasores.
A autenticação garante que as solicitações de API estão vindo de uma fonte legítima. A autorização permite que o servidor de API saiba se o cliente ou endpoint solicitantes estão autorizados a obter os dados solicitados.
Suponha que a Alice construa uma API e o Bob construa um aplicativo web que use a API da Alice. Quando o aplicativo do Bob envia uma solicitação de API para a API da Alice, ele anexa um rótulo que diz "isto veio do Bob" à solicitação. Isso autentica a solicitação do Bob para que o servidor da API da Alice saiba tratar a solicitação como legítima.
O servidor de API da Alice também verifica quais privilégios o Bob tem. Se a solicitação do Bob for para dados que a API da Alice rotulou como "Bob pode ver isso", o servidor atende à solicitação. No entanto, a API da Alice pode ter uma seção de dados rotulada "não é para o Bob" e o servidor não deve atender a uma solicitação desses dados quando Bob for o solicitante. É por isso que a autorização é importante.
(Na realidade, Bob anexaria uma chave ou alguma outra forma de autenticação às solicitações de API, não apenas um rótulo que diz "isto veio do Bob").
Há vários métodos de autenticação para APIs. Os mais comuns são:
O cliente recebe uma chave — uma sequência de caracteres exclusiva que somente ele e o serviço de API conhecem. A chave é anexada a cada solicitação de API. O servidor de API verifica a chave quando recebe uma solicitação de API para garantir que seja de um cliente autenticado.
A desvantagem desse método de autenticação é que, se a chave for roubada, um invasor poderá usá-la para se passar por um cliente legítimo e realizar vários ataques. É importante criptografar solicitações e respostas de e para uma API usando um protocolo de criptografia como Transport Layer Security (TLS) — dessa forma, a chave não é exposta em texto não criptografado ao cruzar a internet.
As solicitações de API podem usar credenciais típicas de nome de usuário e senha para autenticação por meio de um método chamado autenticação HTTP. Na autenticação HTTP, um nome de usuário e uma senha são codificados e adicionados ao cabeçalho HTTP para todas as solicitações de API. O servidor pode verificar essas credenciais em relação às credenciais de clientes permitidos para autenticar as solicitações.
Essa abordagem vem com todos os desafios normalmente associados às senhas: as senhas podem ser perdidas, vazadas, roubadas, adivinhadas ou compartilhadas com partes não confiáveis. As senhas também estão sujeitas a ataques de preenchimento de credenciais e de força bruta, entre outros.
Em vez de exigir autenticação diretamente do cliente, um servidor de API pode obter um token de autenticação de um servidor de autenticação confiável usando o protocolo OAuth. Para usar a API, um usuário faz login em um serviço de terceiros em vez de fazer login diretamente na API. Assim como a abordagem de nome de usuário e senha, esse método de autenticação é vulnerável a ataques preenchimento de credenciais e outros.
TLS é o protocolo de criptografia que cria uma conexão criptografada e autenticada entre o cliente e o servidor ao carregar páginas da web. O TLS também pode verificar e autenticar ambas as extremidades de uma conexão de API.
No TLS mútuo (mTLS), tanto o cliente quanto o servidor têm um certificado TLS e se autenticam mutuamente usando esses certificados, garantindo que ambos sejam quem alegam ser, sem precisar depender de senhas ou de outros métodos de autenticação.
No entanto, a implementação do mTLS pode ser um desafio: todos os clientes e endpoints de API precisam ter certificados TLS legítimos, o que pode ser difícil de aplicar e manter.
O Gateway de API da Cloudflare permite vários recursos de segurança de APIs a partir de um único painel para proteger contra riscos comuns de segurança de APIs. O Gateway de API inclui:
Saiba mais sobre o API Gateway ou soluções de segurança de APIs.