Nessa apresentação, falamos sobre os conceitos de segurança de APIs, mostrando as praticas mais comuns no mercado, e alguns exemplos de quando a segurança não é feita corretamente. Vamos passar também olhando para projeções para o futuro.
• Garantia de autenticidade do servidor/site; • Tecnologia de segurança padrão da indústria. DESVANTAGENS SSL One Way • Maior esforço de configuração em comparação com o uso de HTTP; • Você precisa obter um certificado válido de uma autoridade de certificação ou gerar um certificado auto assinado (apenas para segurança de comunicação); • Maior custo computacional para processamento de transações.
Autenticidade garantida do servidor / site e do cliente; SSL Two Way • Maior esforço de configuração; • Além da necessidade de obter um certificado também é necessário gerar um certificado para fornecer ao cliente; • Maior complexidade do fluxo de operação; • Maior custo computacional para processamento de transações. VANTAGENS DESVANTAGENS
privada (secreta) e uma pública Embora diferentes, as chaves estão matematicamente ligadas. Quando a criptografia é feita com uma das chaves, a descriptografia só pode ser feita com a outra chave do par. Chave privada Chave pública Criptografia assimétrica RSA
❖ Compras Online. ❖ Armazenamento de dados sensíveis (senhas, cartões de crédito…). ❖ Proteção de dados pessoais. ❖ Qualquer mensagem que não pode ser lida exceto pelo destinatário. ❖ Entre diversos outros. Exemplos de momentos de uso Criptografia
comprimento variável para dados de comprimento fixo. Os dados resultantes são chamados de códigos hash. Ao contrário dos algoritmos de criptografia, o código Hash não pode ser revertido para os dados originais Função Hash
Autenticidade: o destinatário pode confirmar que a assinatura foi feita pelo emissor. • Integridade: qualquer alteração na mensagem faz com que a assinatura não corresponda mais ao documento. • Não repúdio: o remetente não pode negar a autenticidade da mensagem Assinatura Digital
Enviar timestamp, firma digital e payload da solicitação 2. Valida a assinatura digital APP Software 3. Valida se o cliente já não enviou o timestamp Unique Request ID
em aplicativos que desejam usar API. O oAuth usa essencialmente tokens: • ID DO CLIENTE • CLIENT_SECRET • GRANT_CODE • ACCESS_TOKEN • REFRESH_TOKEN oAuth
a autenticação do aplicativo deve ser feita, ou seja, não é necessário autenticar o usuário do aplicativo. Dados de Autenticação: CLIENT_ID CLIENT_SECRET Aplicações Próprias Usuario ✗ ✓ Aplicações de Terceiros ✓ oAuth Client Credentials
e do usuário é necessária. Neste fluxo, o nome de usuário e a senha são inseridos no aplicativo. Dados de Autenticação: CLIENT_ID CLIENT_SECRET username password Aplicações Próprias Usuario ✗ ✓ Aplicações de Terceiros ✓ oAuth Password
em que o aplicativo e a autenticação do usuário do aplicativo devem ser feitos. Nesse fluxo, o nome de usuário e a senha são inseridos em uma tela de autenticação, que geralmente é exibida por meio de uma janela pop-up. Dados de Autenticação: CLIENT_ID CLIENT_SECRET username password Aplicações próprias Usuario ✓ Aplicações de terceiros ✓ ✓ oAuth Authorization Code
POST /oauth/grant-code POST /oauth/access-token access-token GET /users?document=12 Clientes com o documento solicitado Empresa dona dos dados do Cliente Empresa Parceira oAuth Authorization Code API Gateway
não são capazes de armazenar um client_secret. Neste fluxo, o nome de usuário e a senha são inseridos em uma tela de autenticação. ACCESS_TOKEN é devolvido ao aplicativo por meio de REDIRECT_URI, previamente cadastrado no portal do desenvolvedor. Datos de autenticación: CLIENT_ID username password Aplicaciones Proprias Usuario ✓ Aplicaciones de terceros ✓ ✓ oAuth Implicit
usuário! • O usuário possui credenciais válidas? • Qual o nível de autorização do usuário? Ele pode criar e deletar objetos? Ele pode apenas recuperar? • Pode verificar apenas dados que pertencem a ele?
gerenciamento de API • Monitore o tráfego da API (de preferência com alertas) • Identifique o comportamento malicioso • Limite o uso de aplicativos • Conecte a detecção de fraude empresarial Negação de Serviço
Apps? ❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico API totalmente pública, potencialmente centenas de Apps externos Alguns Apps externos de parceiros bem conhecidos Somente Apps desenvolvidos pela própria empresa Níveis de Criticidade
❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico Registros médicos, transações financeiras ou dados vitais ao negócio Informações sociais, Internet das coisas Informações acessórias não relacionadas a usuários Níveis de Criticidade
❑ As APIs dão acesso a informações sensíveis? ❑ As APIs alteram dados importantes? Básico Intermediário Crítico Todas as operações (inclusive DELETEs) em elementos e coleções de recursos GETs e alguns POSTs e PUTs em recursos não vitais Somente GETs Níveis de Criticidade
expor sua API, avalie a criticidade da mesma, até em nível de métodos. • Além de gerenciar bem a autenticação, não se esqueça de trabalhar com autorização! • Nunca retorne o stack trace no body de uma requisição! • Acompanhe o OWASP API Security • Use rate limit e controle seus APPs consumidores. Resumindo