SlideShare uma empresa Scribd logo
1 de 71
Segurança de APIs
Daniel Varanda
Solution Architect | Pre Sales
danielvaranda@gmail.com
http://linkedin.com/in/danielvaranda
Segurança de APIs
Está em Alta
É possível hackear um marcapasso e matar o paciente
https://canaltech.com.br/hacker/perigos-da-tecnologia-e-possivel-hackear-um-marcapasso-e-matar-o-paciente-82795
EUA fazem recall de 465 mil marcapassos vulneráveis a hackers
https://oglobo.globo.com/sociedade/tecnologia/eua-fazem-recall-de-465-mil-marcapassos-vulneraveis-hackers-21774337
Brecha em app fitness revela dados de militares e funcionários de
inteligência
https://canaltech.com.br/seguranca/brecha-em-app-fitness-revela-dados-de-militares-e-funcionarios-de-inteligenci-117680
Polícia flagra 'furto hacker' de carro sem as chaves
https://g1.globo.com/carros/noticia/video-veja-como-e-o-furto-hacker-de-carro-sem-as-chaves.ghtml
McDonalds India is leaking 2.2 million users data
https://hackernoon.com/mcdonalds-india-is-leaking-2-2-million-users-data-d5758b2eb3f8
Falha de segurança no Tinder provoca vazamento de milhares de fotos
https://canaltech.com.br/seguranca/falha-de-seguranca-no-tinder-provoca-vazamento-de-milhares-de-fotos-93038
Dados pessoais de famosos foram roubados do Instagram
https://www.noticiasaominuto.com/tech/856103/dados-pessoais-de-famosos-foram-roubados-do-instagram
Vulnerabilidades
API (em português: Interface de Programação de Aplicação), é um conjunto de
rotinas e padrões estabelecidos por um software para utilização de suas
funcionalidades por aplicativos que não pretendem envolver-se em detalhes
de implementação do software, mas apenas utilizar suas funcionalidades.
Exemplos: RMI, JMS, trocas de arquivo
Web API é uma das formas possíveis para construção de APIs, onde as trocas
de informações entre as aplicações são feitas através da Internet (mais
especificamente através do protocolo de transporte HTTP).
Exemplos: RESTful, GraphQL, WebService SOAP
APP SoftwareAPI
RESTful
JSON JSON
HTTP
Espionagem
de dados
Manipulação
de parâmetros
Repetição de
chamadas
Negação de
Serviço
(DDoS)
Uso não
autorizado
Contramedidas
Uso não autorizado
oAuth
Padrão aberto para identificação e
autenticação utilizado para fazer logon
em aplicações que desejam utilizar APIs
oAuth
oAuth utiliza-se essencialmente de tokens:
CLIENT_ID
CLIENT_SECRET
GRANT_CODE
ACCESS_TOKEN
REFRESH_TOKEN
oAuth
Esses tokens são emitidos durante a criação do aplicativo
ou a partir de um dos fluxos do oAuth
Client Credentials
Resource Owner Password Credentials
Authorization code
Implicit
Refresh token
oAuth
Client Credentials
Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros, onde é
necessário que seja feita a autenticação apenas do aplicativo, ou seja, não é
necessário autenticar o usuário do aplicativo.
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Aplicativo
Próprio
Usuário
✗✓ Aplicativo
de terceiro
✓
oAuth
Resource Owner Password Credentials
Fluxo utilizado por aplicativos próprios, onde é necessário que seja feita a
autenticação do aplicativo e do usuário do aplicativo.
Nesse fluxo, o login e senha do usuário são digitados no próprio aplicativo.
Aplicativo
Próprio
Usuário
✓✓ Aplicativo
de terceiro
✗
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Login
Senha
oAuth
Authorization code
Fluxo utilizado por aplicativos de terceiros (ou aplicativos próprios), onde é
necessário que seja feita a autenticação do aplicativo e do usuário do
aplicativo.
Nesse fluxo, o login e senha do usuário é digitado em uma tela de
autenticação, normalmente exibida através de uma janela popup.
Aplicativo
Próprio
Usuário
✓✓ Aplicativo
de terceiro
✓
Dados para Autenticação:
CLIENT_ID
CLIENT_SECRET
Login
Senha
oAuth
Implicit
Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros que não
são capazes de armazenar um CLIENT_SECRET.
Nesse fluxo, o login e senha do usuário é digitado em uma tela de
autenticação. O ACCESS_TOKEN é retornado para o aplicativo através da
REDIRECT_URI do aplicativo, previamente cadastrada no portal do
desenvolvedor.
Aplicativo
Próprio
Usuário
✓✗✓ Aplicativo
de terceiro
✓
Dados para Autenticação:
CLIENT_ID
Login
Senha
oAuth
Fluxo
Aplicativo Próprio Aplicativo de Terceiro
Autenticação do
Aplicativo
Autenticação do
Usuário
Autenticação do
Aplicativo
Autenticação do
Usuário
Client Credentials ✓ ✗ ✓ ✗
Resource Owner Password
Credentials ✓ ✓ Não utilizar Não utilizar
Authorization Code
Avalie utilizar o fluxo:
Resource Owner Password
Credentials
Avalie utilizar o fluxo:
Resource Owner Password
Credentials
✓ ✓
Implicit ✓ ✓ ou ✗ ✓ ✓ ou ✗
oAuth
APP
Request:
Method: GET
URI: https://api.sensedia.com.br/users/me
Headers:
client_id → xpto123
access_token → qwerty321
Response:
HTTP Status: 200
Body:
{
"login": "danielvaranda",
"nome": "Daniel Varanda",
"email": "danielvaranda@gmail.com"
}
SoftwareAPI
RESTful
OpenID
Padrão aberto que permite que usuários
sejam autenticados por sites
cooperantes, facilitando a transferência
de atributos do usuário, como: nome,
email, gênero...
Open ID
JSON Web Token
JWT
Padrão aberto que define uma forma
compacta e auto-suficiente para transmitir
informações de forma segura com um objeto
JSON
JSON Web Token
Two or Three factor authentication
Two or Three factor
authentication:
algo que você sabe
algo que você tem
algo que você é
+ +
137 130
Contramedidas
Espionagem de Rede
Criptografia Simétrica
Algoritmos de criptografía simétrica são
algoritmos que utilizam a mesma chave para
criptografar e descriptografar a informação
Criptografia Simétrica
Algoritmos recomendado
AESAdvanced Encryption Standard
Rápido
A chave pode vazar mais facilmente
Forças
Fraquezas
Criptografia Assimétrica
Algoritmos de criptografia assimétrica
requer um par de chaves, uma delas privada
(secreta) e a outra pública
Apesar de diferentes, as chaves são
matematicamente ligadas. Quando a
criptografia é feita com uma das chaves a
descriptografia só poderá ser feita com a
outra chave do par
Chave Privada Chave Pública
Criptografia Assimétrica
Algoritmos recomendado
RSA
Rivest-Shamir-Adleman
Mais fácil para manter a chave privada
em segredo
Lento, muito lento!
Forças
Fraquezas
Simétrico Assimétrico
2. Obter chave pública
3.1 Gerar uma chave simétrica randômica
3.2. Criptografar chave simétrica com a chave pública
3.3. Enviar a chave criptografada
4. Descriptografar a chave simétrica
com a chave privada
APP Software
1. Gerar par de chave assimétrica
Contramedidas
Manipulação de Parâmetros
Função Hash
Função hash é um algoritmo que mapeia
dados de comprimento variável para dados
de comprimento fixo. O dado resultante é
chamado de hash code
Diferente dos algoritmos de criptografia, o
hash code não pode ser revertido para o
dado original
Algoritmos recomendado
SHA-2
Secure Hash Algorithm 2
Assinatura Digital
Método utilizado para autenticação de
informação
Emissor
Receptor
Assinatura Digital
A assinatura digital garante:
● Autenticidade: o receptor pode confirmar que a assinatura foi feita
pelo emissor
● Integridade: qualquer alteração da mensagem faz com que a
assinatura não corresponda mais ao documento
● Não-repúdio: o emissor não pode negar a autenticidade da
mensagem
Contramedidas
Repetição de Chamadas
Unique Request ID
Unique Request ID
1.1 Obter timestamp
1.2. Assinar digitalmente o timestamp
1.3. Enviar timestamp, assinatura digital e payload da requisição
2. Validar assinatura digital
APP Software
3. Validar se o timestamp é único
para esse client
Contramedidas
Ataque de Negação de Serviço (DDoS)
❖ WAF (Web Application Firewall)
❖ API Management Platform
❖ Monitorar o tráfego nas APIs
(preferencialmente com alertas)
❖ Identificar comportamento malicioso
❖ Limitar o uso dos Apps
❖ Plugar detecção de Fraude de negócio
Mas, o que eu devo utilizar
nas minhas APIs?
Bala de Prata - Capaz de matar lobisomens, bruxas e outros
monstros
Porteiro Severino - Cara, crachá
Fort Knox - Depósito de Ouro dos Estados Unidos
Muita Comodidade
Pouca Segurança
Muita Segurança
Pouca Comodidade
Níveis de Criticidade
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
Somente Apps desenvolvidos pela
própria empresa
Informações acessórias não
relacionadas a usuários
Básico
Intermediário
Crítico
Níveis de Criticidade
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
Básico
Intermediário
API totalmente pública,
potencialmente centenas de Apps
externos
Alguns Apps externos de parceiros
bem conhecidos
Crítico
Uso interno, apenas
Níveis de Criticidade
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
Básico
Intermediário
Registros médicos, transações
financeiras ou dados vitais ao
negócio
Informações sociais,
Internet das coisas
Crítico
Informações públicas, cotação de
preços
Níveis de Criticidade
Somente Apps desenvolvidos pela
própria empresa
Informações acessórias não
relacionadas a usuários
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
Básico
Intermediário
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
Crítico
Dicas e Boas Práticas
Dicas e Boas Práticas
Lembre-se dos mecanismos de segurança:
❖ oAuth (use o fluxo correto)
❖ OpenID
❖ JWT
❖ Two or Three factor authentication
❖ Criptografia (simétrica e assimétrica)
❖ Assinatura Digital
❖ Unique Request ID
Tap to Pay
Dicas e Boas Práticas
Crie SDKs para operações comuns
❖ Obter chave pública
❖ Gerar chave AES
❖ Criptografar e enviar chave AES
❖ Criptografar payloads
❖ Gerar Unique Request ID
❖ Assinatura Digital
Dicas e Boas Práticas
APP SoftwareAPIAPI API Gateway
Implementação do CoreRequisitos não funcionais
Separation of Concerns
OWASP
Open Web Application Security Project
The OWASP Top 10 Application Security Risks
❖ A1 - Injection
❖ A2 - Broken Authentication and Session Management
❖ A3 - Cross-Site Scripting (XSS)
❖ A4 - Broken Access Control
❖ A5 - Security Misconfiguration
❖ A6 - Sensitive Data Exposure
❖ A7 - Insufficient Attack Protection
❖ A8 - Cross-Site Request Forgery
❖ A9 - Using Components with Known Vulnerabilities
❖ A10 - Underprotected APIs
OWASP
Obrigado!
Daniel Varanda
Solution Architect | Pre Sales
danielvaranda@gmail.com
http://linkedin.com/in/danielvaranda

Mais conteúdo relacionado

Semelhante a Segurança de APIs: Protegendo Dados e Autenticando Acessos

Detecção e Mitigação de Ameaças - SID301 - Sao Paulo Summit
Detecção e Mitigação de Ameaças -  SID301 - Sao Paulo SummitDetecção e Mitigação de Ameaças -  SID301 - Sao Paulo Summit
Detecção e Mitigação de Ameaças - SID301 - Sao Paulo SummitAmazon Web Services
 
Apostila - Aspectos Técnicos de Segurança para eCommerce
Apostila - Aspectos Técnicos de Segurança para eCommerceApostila - Aspectos Técnicos de Segurança para eCommerce
Apostila - Aspectos Técnicos de Segurança para eCommerceE-Commerce Brasil
 
Os 10 erros mais comuns de segurança na operação de um ecommerce
Os 10 erros mais comuns de segurança na operação de um ecommerceOs 10 erros mais comuns de segurança na operação de um ecommerce
Os 10 erros mais comuns de segurança na operação de um ecommerceE-Commerce Brasil
 
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo SummitAmazon Web Services
 
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...Amazon Web Services LATAM
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Alex Hübner
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebMagno Logan
 
Certificação Digital - Aula2
Certificação Digital - Aula2Certificação Digital - Aula2
Certificação Digital - Aula2Leandro Rezende
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012Marcio Cunha
 
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS Summit
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS SummitThreat detection and mitigation at AWS - SEC301 - São Paulo AWS Summit
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS SummitAmazon Web Services
 
Como ser um Hacker Ético Profissional
Como ser um Hacker Ético ProfissionalComo ser um Hacker Ético Profissional
Como ser um Hacker Ético ProfissionalStrong Security Brasil
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014Tiago Marchetti Dolphine
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaJosé Vahl
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaFábio Rosato
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...Symantec Brasil
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxEdlaine Zamora
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroFlávio Lisboa
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureRubens Guimarães - MTAC MVP
 

Semelhante a Segurança de APIs: Protegendo Dados e Autenticando Acessos (20)

Detecção e Mitigação de Ameaças - SID301 - Sao Paulo Summit
Detecção e Mitigação de Ameaças -  SID301 - Sao Paulo SummitDetecção e Mitigação de Ameaças -  SID301 - Sao Paulo Summit
Detecção e Mitigação de Ameaças - SID301 - Sao Paulo Summit
 
Apostila - Aspectos Técnicos de Segurança para eCommerce
Apostila - Aspectos Técnicos de Segurança para eCommerceApostila - Aspectos Técnicos de Segurança para eCommerce
Apostila - Aspectos Técnicos de Segurança para eCommerce
 
Os 10 erros mais comuns de segurança na operação de um ecommerce
Os 10 erros mais comuns de segurança na operação de um ecommerceOs 10 erros mais comuns de segurança na operação de um ecommerce
Os 10 erros mais comuns de segurança na operação de um ecommerce
 
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
 
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...
Segurança - 10 regras que você deve saber antes de migrar sua infraestrutura ...
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
 
ENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na WebENSOL 2011 - OWASP e a Segurança na Web
ENSOL 2011 - OWASP e a Segurança na Web
 
Certificação Digital - Aula2
Certificação Digital - Aula2Certificação Digital - Aula2
Certificação Digital - Aula2
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012
 
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS Summit
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS SummitThreat detection and mitigation at AWS - SEC301 - São Paulo AWS Summit
Threat detection and mitigation at AWS - SEC301 - São Paulo AWS Summit
 
Como ser um Hacker Ético Profissional
Como ser um Hacker Ético ProfissionalComo ser um Hacker Ético Profissional
Como ser um Hacker Ético Profissional
 
AIML Reforçando a segurança virtual
AIML Reforçando a segurança virtualAIML Reforçando a segurança virtual
AIML Reforçando a segurança virtual
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...
BE AWARE WEBINAR - Se a senha é fraca, como posso melhorar a autenticação da ...
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento Seguro
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
 

Segurança de APIs: Protegendo Dados e Autenticando Acessos

  • 1. Segurança de APIs Daniel Varanda Solution Architect | Pre Sales danielvaranda@gmail.com http://linkedin.com/in/danielvaranda
  • 3. É possível hackear um marcapasso e matar o paciente https://canaltech.com.br/hacker/perigos-da-tecnologia-e-possivel-hackear-um-marcapasso-e-matar-o-paciente-82795 EUA fazem recall de 465 mil marcapassos vulneráveis a hackers https://oglobo.globo.com/sociedade/tecnologia/eua-fazem-recall-de-465-mil-marcapassos-vulneraveis-hackers-21774337
  • 4. Brecha em app fitness revela dados de militares e funcionários de inteligência https://canaltech.com.br/seguranca/brecha-em-app-fitness-revela-dados-de-militares-e-funcionarios-de-inteligenci-117680
  • 5. Polícia flagra 'furto hacker' de carro sem as chaves https://g1.globo.com/carros/noticia/video-veja-como-e-o-furto-hacker-de-carro-sem-as-chaves.ghtml
  • 6. McDonalds India is leaking 2.2 million users data https://hackernoon.com/mcdonalds-india-is-leaking-2-2-million-users-data-d5758b2eb3f8
  • 7. Falha de segurança no Tinder provoca vazamento de milhares de fotos https://canaltech.com.br/seguranca/falha-de-seguranca-no-tinder-provoca-vazamento-de-milhares-de-fotos-93038
  • 8. Dados pessoais de famosos foram roubados do Instagram https://www.noticiasaominuto.com/tech/856103/dados-pessoais-de-famosos-foram-roubados-do-instagram
  • 9.
  • 11. API (em português: Interface de Programação de Aplicação), é um conjunto de rotinas e padrões estabelecidos por um software para utilização de suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes de implementação do software, mas apenas utilizar suas funcionalidades. Exemplos: RMI, JMS, trocas de arquivo Web API é uma das formas possíveis para construção de APIs, onde as trocas de informações entre as aplicações são feitas através da Internet (mais especificamente através do protocolo de transporte HTTP). Exemplos: RESTful, GraphQL, WebService SOAP
  • 12. APP SoftwareAPI RESTful JSON JSON HTTP Espionagem de dados Manipulação de parâmetros Repetição de chamadas Negação de Serviço (DDoS) Uso não autorizado
  • 14. oAuth Padrão aberto para identificação e autenticação utilizado para fazer logon em aplicações que desejam utilizar APIs
  • 15. oAuth oAuth utiliza-se essencialmente de tokens: CLIENT_ID CLIENT_SECRET GRANT_CODE ACCESS_TOKEN REFRESH_TOKEN
  • 16. oAuth Esses tokens são emitidos durante a criação do aplicativo ou a partir de um dos fluxos do oAuth Client Credentials Resource Owner Password Credentials Authorization code Implicit Refresh token
  • 17. oAuth Client Credentials Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros, onde é necessário que seja feita a autenticação apenas do aplicativo, ou seja, não é necessário autenticar o usuário do aplicativo. Dados para Autenticação: CLIENT_ID CLIENT_SECRET Aplicativo Próprio Usuário ✗✓ Aplicativo de terceiro ✓
  • 18. oAuth Resource Owner Password Credentials Fluxo utilizado por aplicativos próprios, onde é necessário que seja feita a autenticação do aplicativo e do usuário do aplicativo. Nesse fluxo, o login e senha do usuário são digitados no próprio aplicativo. Aplicativo Próprio Usuário ✓✓ Aplicativo de terceiro ✗ Dados para Autenticação: CLIENT_ID CLIENT_SECRET Login Senha
  • 19. oAuth Authorization code Fluxo utilizado por aplicativos de terceiros (ou aplicativos próprios), onde é necessário que seja feita a autenticação do aplicativo e do usuário do aplicativo. Nesse fluxo, o login e senha do usuário é digitado em uma tela de autenticação, normalmente exibida através de uma janela popup. Aplicativo Próprio Usuário ✓✓ Aplicativo de terceiro ✓ Dados para Autenticação: CLIENT_ID CLIENT_SECRET Login Senha
  • 20.
  • 21. oAuth Implicit Fluxo utilizado por aplicativos próprios ou aplicativos de terceiros que não são capazes de armazenar um CLIENT_SECRET. Nesse fluxo, o login e senha do usuário é digitado em uma tela de autenticação. O ACCESS_TOKEN é retornado para o aplicativo através da REDIRECT_URI do aplicativo, previamente cadastrada no portal do desenvolvedor. Aplicativo Próprio Usuário ✓✗✓ Aplicativo de terceiro ✓ Dados para Autenticação: CLIENT_ID Login Senha
  • 22.
  • 23. oAuth Fluxo Aplicativo Próprio Aplicativo de Terceiro Autenticação do Aplicativo Autenticação do Usuário Autenticação do Aplicativo Autenticação do Usuário Client Credentials ✓ ✗ ✓ ✗ Resource Owner Password Credentials ✓ ✓ Não utilizar Não utilizar Authorization Code Avalie utilizar o fluxo: Resource Owner Password Credentials Avalie utilizar o fluxo: Resource Owner Password Credentials ✓ ✓ Implicit ✓ ✓ ou ✗ ✓ ✓ ou ✗
  • 24. oAuth APP Request: Method: GET URI: https://api.sensedia.com.br/users/me Headers: client_id → xpto123 access_token → qwerty321 Response: HTTP Status: 200 Body: { "login": "danielvaranda", "nome": "Daniel Varanda", "email": "danielvaranda@gmail.com" } SoftwareAPI RESTful
  • 25. OpenID Padrão aberto que permite que usuários sejam autenticados por sites cooperantes, facilitando a transferência de atributos do usuário, como: nome, email, gênero...
  • 26.
  • 28. JSON Web Token JWT Padrão aberto que define uma forma compacta e auto-suficiente para transmitir informações de forma segura com um objeto JSON
  • 29.
  • 31. Two or Three factor authentication Two or Three factor authentication: algo que você sabe algo que você tem algo que você é + +
  • 32.
  • 35. Criptografia Simétrica Algoritmos de criptografía simétrica são algoritmos que utilizam a mesma chave para criptografar e descriptografar a informação
  • 36.
  • 37. Criptografia Simétrica Algoritmos recomendado AESAdvanced Encryption Standard Rápido A chave pode vazar mais facilmente Forças Fraquezas
  • 38. Criptografia Assimétrica Algoritmos de criptografia assimétrica requer um par de chaves, uma delas privada (secreta) e a outra pública Apesar de diferentes, as chaves são matematicamente ligadas. Quando a criptografia é feita com uma das chaves a descriptografia só poderá ser feita com a outra chave do par Chave Privada Chave Pública
  • 39.
  • 40. Criptografia Assimétrica Algoritmos recomendado RSA Rivest-Shamir-Adleman Mais fácil para manter a chave privada em segredo Lento, muito lento! Forças Fraquezas
  • 42. 2. Obter chave pública 3.1 Gerar uma chave simétrica randômica 3.2. Criptografar chave simétrica com a chave pública 3.3. Enviar a chave criptografada 4. Descriptografar a chave simétrica com a chave privada APP Software 1. Gerar par de chave assimétrica
  • 44. Função Hash Função hash é um algoritmo que mapeia dados de comprimento variável para dados de comprimento fixo. O dado resultante é chamado de hash code Diferente dos algoritmos de criptografia, o hash code não pode ser revertido para o dado original
  • 46. Assinatura Digital Método utilizado para autenticação de informação
  • 49. Assinatura Digital A assinatura digital garante: ● Autenticidade: o receptor pode confirmar que a assinatura foi feita pelo emissor ● Integridade: qualquer alteração da mensagem faz com que a assinatura não corresponda mais ao documento ● Não-repúdio: o emissor não pode negar a autenticidade da mensagem
  • 52. 1.1 Obter timestamp 1.2. Assinar digitalmente o timestamp 1.3. Enviar timestamp, assinatura digital e payload da requisição 2. Validar assinatura digital APP Software 3. Validar se o timestamp é único para esse client
  • 53. Contramedidas Ataque de Negação de Serviço (DDoS)
  • 54. ❖ WAF (Web Application Firewall) ❖ API Management Platform ❖ Monitorar o tráfego nas APIs (preferencialmente com alertas) ❖ Identificar comportamento malicioso ❖ Limitar o uso dos Apps ❖ Plugar detecção de Fraude de negócio
  • 55. Mas, o que eu devo utilizar nas minhas APIs?
  • 56. Bala de Prata - Capaz de matar lobisomens, bruxas e outros monstros
  • 57. Porteiro Severino - Cara, crachá
  • 58. Fort Knox - Depósito de Ouro dos Estados Unidos
  • 59. Muita Comodidade Pouca Segurança Muita Segurança Pouca Comodidade
  • 60. Níveis de Criticidade Crítico ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes? Somente Apps desenvolvidos pela própria empresa Informações acessórias não relacionadas a usuários Básico Intermediário Crítico
  • 61. Níveis de Criticidade ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes? Básico Intermediário API totalmente pública, potencialmente centenas de Apps externos Alguns Apps externos de parceiros bem conhecidos Crítico Uso interno, apenas
  • 62. Níveis de Criticidade Crítico ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes? Básico Intermediário Registros médicos, transações financeiras ou dados vitais ao negócio Informações sociais, Internet das coisas Crítico Informações públicas, cotação de preços
  • 63. Níveis de Criticidade Somente Apps desenvolvidos pela própria empresa Informações acessórias não relacionadas a usuários ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes? Básico Intermediário 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 Crítico
  • 64. Dicas e Boas Práticas
  • 65. Dicas e Boas Práticas Lembre-se dos mecanismos de segurança: ❖ oAuth (use o fluxo correto) ❖ OpenID ❖ JWT ❖ Two or Three factor authentication ❖ Criptografia (simétrica e assimétrica) ❖ Assinatura Digital ❖ Unique Request ID Tap to Pay
  • 66. Dicas e Boas Práticas Crie SDKs para operações comuns ❖ Obter chave pública ❖ Gerar chave AES ❖ Criptografar e enviar chave AES ❖ Criptografar payloads ❖ Gerar Unique Request ID ❖ Assinatura Digital
  • 67. Dicas e Boas Práticas APP SoftwareAPIAPI API Gateway Implementação do CoreRequisitos não funcionais Separation of Concerns
  • 68.
  • 69. OWASP Open Web Application Security Project
  • 70. The OWASP Top 10 Application Security Risks ❖ A1 - Injection ❖ A2 - Broken Authentication and Session Management ❖ A3 - Cross-Site Scripting (XSS) ❖ A4 - Broken Access Control ❖ A5 - Security Misconfiguration ❖ A6 - Sensitive Data Exposure ❖ A7 - Insufficient Attack Protection ❖ A8 - Cross-Site Request Forgery ❖ A9 - Using Components with Known Vulnerabilities ❖ A10 - Underprotected APIs OWASP
  • 71. Obrigado! Daniel Varanda Solution Architect | Pre Sales danielvaranda@gmail.com http://linkedin.com/in/danielvaranda