O desenvolvimento e consumo de APIs torna-se cada vez mais constante, especialmente por parte de grandes organizações, afinal a possibilidade de integração de dados é bem atrativa. Entretanto a proteção, segurança e integridade das APIs ainda preocupam qualquer pessoa que trabalhe com elas, e não é para menos, já que um volume altíssimo de dados sensíveis trafegam por elas diariamente.
Caso sua empresa tenha APIs, já parou para avaliar a segurança delas?
Existem alguns aspectos que podem guiar você na melhora da segurança de suas APIs, levando em conta a finalidade destas, sejam para realizar integrações internas ou integrações com aplicações de terceiros.
Vou comentar sobre 4 aspectos da sua API que mais precisam de atenção no momento de estabelecer uma política de segurança de APIs.
Os pontos em que você precisa ficar atento são:
Autenticação e autorização
Provavelmente esta seja a principal preocupação quando estamos falando da segurança de APIs, afinal ninguém gostaria de sofrer o roubo se suas credenciais.
Para garantIr o acesso o acesso a sua API, é importante que você implemente padrões de autenticação e autorização.
Vou comentar sobre alguns deles:
OAuth2
É um protocolo que oferece acesso limitado a recursos de um website sem que os usuários tenham que expor suas credenciais. O OAuth2 tem se firmado como uma das principais formas de autorizar acesso a determinado recurso, principalmente quando tal acesso deve ser concedido pelo próprio usuário. Grandes empresas como Google, Facebook, Twitter e LinkedIn já adotaram esse padrão de autenticação.
OpenID Connect
Este é um protocolo de identidade simples e um padrão aberto. O OpenID Connect foi desenvolvido com base no protocolo OAuth 2 . A partir dele aplicativos de clientes dependem
da autenticação executada pelo OpenID Connect Provider (OP), a fim de verificar a identidade de um usuário.
App Token / JWT
Trata-se de uma chave-de autenticação que identifica o seu cadastro. Ela é necessária para utilizar as APIs disponibilizadas no sistema. Nem preciso dizer o quão importante é a não divulgação da sua chave de acesso, já que através dela podem ser realizadas consultas de informações, que você prefere não divulgar.
Um exemplo de token que você pode utilizar é o JWT (JSON Web Token). Essa técnica definida na RFC 7519 garante a autenticação e autorização de uso de APIs de uma forma segura. Atualmente é o padrão de segurança mais usado para autenticar usuários em APIs RESTful.
É possível validar os dados contidos no JWT a qualquer instante, pois o token é assinado digitalmente, sendo este formado por três seções: Header, Payload e Signature.
Preciso destacar que, independente do protocolo de autenticação/autorização que você escolha, há máximas que você sempre deve seguir: nunca salvar tokens em plain-text e enviar senhas por e-mail.
Privacidade
Termos como Man-in-the Middle, Data Scraping e Network Eavesdropping são comuns para você? Qualquer pessoa que lide de alguma forma com APIs precisa estar familiarizada com essas expressões, já que se referem a ataques a privacidade de APIs, ou seja, eles podem revelar dados sensíveis de seus usuários.
Dessa forma, é essencial que você fique atento às informações que trafegam por meio de APIs. Elas estão sendo disponibilizadas para as pessoas corretas?
A melhor coisa a se fazer para mitigar os riscos é o uso de SSL/TLS.
O certificado SSL (Secure Sockets Layer) aumenta a segurança digital, protegendo suas informações por meio de comunicação criptografada entre a API e navegador. Tal tecnologia, apesar de eficaz, vem sendo continuamente substituída pelo TLS (Transport Layer Security). Esse certificado de segurança é simples e barato de se adquirir, por isso não há desculpas para não utilizá-lo.
Disponibilidade
Monitorar a disponibilidade e o desempenho de sua API, pode auxiliar a detectar comportamentos maliciosos, o que seria um indicativo de ataques do tipo DoS (Denial Of Service), também conhecido como ataque de negação de serviço. Uma tentativa de sobrecarregar o servidor fazendo com que seus recursos fiquem indisponíveis aos usuários.
O que recomendo é instrumentalizar o monitoramento do tráfego em sua API para identificar comportamentos indesejados e pausar possíveis ameaças. Outro recurso é o controle de rate limiting (ou throttling) que limita a quantidade de chamadas aceitas em um determinado período de tempo, podendo ser personalizado por app que está consumindo.
Além disso, implementar uma camada de WAF (Web Application Firewall) para proteger o acesso às suas APIs. Este firewall age como uma barreira entre seu serviço baseado em web e o restante da internet, logo ele monitora, filtra e bloqueia automaticamente o tráfego de dados malicioso. Ele também trabalha para impedir a exposição não autorizada de dados em um site ou aplicativos web. Ao utilizar um WAF você estará menos vulnerável à manipulação de conteúdo exibido (pixação), ataques de injeção em bancos de dados do tipo SQL (Structured Query Language) e fraudes no acesso administrativo.
Integridade
Ataques como injeção de SQL, XML e JSON podem prejudicar e muito a integridade de uma API. o ideal é que você não exponha nenhum recurso ou operação a menos que seja realmente necessário. A recomendação pode parecer até mesmo óbvia, porém ainda há empresas que utilizam técnicas de geração automática de APIs através de geradores de código backend.
Gerenciador de APIs (Gateway)
O Gateway de API age como o principal ponto de controle do tráfego de sua API. Logo, ele atua como um filtro de entrada, direcionando os dados ao ponto mais adequado. Um bom Gateway pode autenticar o tráfego e controlar e analisar o uso das APIs.
O fato de um API Gateway ser capaz de coordenar e controlar vários serviços não o torna completamente imune a ataques, mas sua aplicação garante que o sistema como um todo não será afetado e sim apenas um serviço específico. Dessa forma, além de diminuir os danos em caso de ataques, essa estratégia auxilia os usuários, já que as outras funcionalidades se mantém normais durante um ataque.
Resumindo, um Gateway possui 4 aplicações:
Filtro para o tráfego da integração dos meios (mobile, web, cloud, entre outros)
Porta de entrada única para diversas APIs que você queira expor
Roteador de tráfego de APIs
Mecanismos de segurança como autenticação, log e controle de acesso aos usuários e recursos
Quando falamos de empresas que oferecem suporte ao gerenciamento de APIs há diversas opções disponíveis no mercado. Vale destacar empresas estrangeiras como KONG, Red Hat e Apigee. Além deles, temos um grande player nacional reconhecido internacionalmente pelo Gartner como Visionária que é a Sensedia, empresa de tecnologia especializada em todo o Ciclo de Vida de APIs e SOA (Service Oriented Architectures).