SlideShare uma empresa Scribd logo
1 de 118
Baixar para ler offline
CSRF com OAuth 2
Leonardo B. Cordeiro
Cartão de crédito
Cartão de crédito
?
?
?
?
Você confia?
X
Sistema
Confiável
Sistema
Confiável
E agora?
Você confia?
Veremos :)
Desenvolvedor e Instrutor
github.com/leonardocordeiro
leonardo.cordeiro@caelum.com.br
Leonardo Bernardino Cordeiro
Relembrando …
OAuth 2
Cuida de como aplicações clientes podem acessar
os dados dos clientes cadastrados no resource
server
Grant Types
Authorization:
Bearer
123
Authorization:
Bearer
123
Resource Owner Credentials Grant
Resource Owner Credentials Grant
Confiabilidade
Você confia?
Comprar!
302 (Moved Temporarily)
client_id: 987
location: /login
EXPLICAR COMO OBTEVE CLIENT_ID
Cadastra
client_id
client_secret
client_id: 987
Validando…
OK!
302 (Moved Temporarily)
auth_token: 1234
location: /token/1234
/token/1234
client_id: 987
client_secret: ****
auth_token: 1234
access_token: 765
Gera o Access Token e associa a
sessão do usuário na livraria.
/pagar
access_token: 765
/endereco
access_token: 765
endereco: Rua do
Ouvidor, 50
access_token: 765
Access Token
access_token: 765
O acesso aos recursos (dados) do usuário foi concedido
a um client_id.
Access Token
access_token: 765
O acesso aos recursos (dados) do usuário foi concedido
a um client_id.
Access Token
Deve ser invalidado (revogação) depois de um tempo.
Evitar que outras aplicações descubram
Authorization Code
Credentials Grant
Não preciso passar minha senha
do Paypal
pra Casa do Código!
Estou seguro!
Cadastra
client_id
client_secret
302 (Moved Temporarily)
client_id: 1001
location: /login
client_id: 1001
Validando…
OK!
302 (Moved Temporarily)
auth_token: 4567
location: /casacodigo/token
auth_token: 4567
Como trocar o auth_token pelo
access_token?
/token/1234
O que faz essa URI?
client_id: 987
client_secret: ****
auth_token: 1234
access_token: 765
Sessão
/pagar
access_token: 765
/token/1234
/token/4567
Sessão
Sessão
/endereco
access_token: 543
endereco: <endereço do hacker>
Jamais acessarei essa URI!
<img src=“/images/carro.png”>
<img src=“/images/flores.png”>
404
<img src=“http://casadocodigo.com.br/.../token/4567”>
?????
<img src=“/token/4567”>
<img src=“/token/4567”>
?
Cross Site
Request Forgery
Força o cliente a executar algo que ele nao deseja
Gerar um token e associá-lo a
sessão?
Gerar um token e associá-lo a
sessão?
E validá-lo na hora de receber
um Authorization Code?
Comprar!
Gerando
Token
Sessão
302 (Moved Temporarily)
state: 9998
client_id: 987
location: /login
state: 9998
client_id: 987
Validando…
OK!
302 (Moved Temporarily)
state: 9998
auth_token: 1234
location: /token/1234/9998
/token/1234/
9998
Sessão
client_id: 987
client_secret: ****
auth_token: 1234
<img src=“/token/4567/????”>
Representa a sessão do usuário no Client Application
state
Representa a sessão do usuário no Client Application
Gerado antes do redirect ao Authorization
Server (login)
state
Representa a sessão do usuário no Client Application
Gerado antes do redirect ao Authorization
Server (login)
Client Application irá validar ao recebê-lo junto com
Authorization Token
state
Recomendado no request
state
OAuth2 Spec 4.1.1
Obrigatório na resposta,
caso esteja presente no request
state
OAuth2 Spec 4.1.2
Desenvolvedor e Instrutor
github.com/leonardocordeiro
leonardo.cordeiro@caelum.com.br
Leonardo Bernardino Cordeiro
Obrigado!

Mais conteúdo relacionado

Semelhante a CSRF e OAuth2

Brasil Cidadão - SDK V.1.4
Brasil Cidadão - SDK V.1.4Brasil Cidadão - SDK V.1.4
Brasil Cidadão - SDK V.1.4Colaborativismo
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookLuiz Arthur
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo RealDeep Tech Brasil
 
Manual de instalação de https no iis7 2
Manual de instalação de https no iis7   2Manual de instalação de https no iis7   2
Manual de instalação de https no iis7 2Washington Souza
 
S+S Day - Segurança na nuvem
S+S Day - Segurança na nuvemS+S Day - Segurança na nuvem
S+S Day - Segurança na nuvemLuciano Condé
 
OWASP Top 10 - A2 2017 Broken Authentication
OWASP Top 10 - A2 2017 Broken AuthenticationOWASP Top 10 - A2 2017 Broken Authentication
OWASP Top 10 - A2 2017 Broken AuthenticationFernando Galves
 
Abordagem sistemática da infra-estrutura de chave pública
Abordagem sistemática da infra-estrutura de chave públicaAbordagem sistemática da infra-estrutura de chave pública
Abordagem sistemática da infra-estrutura de chave públicabrunoluiz
 
Glossario
Glossario Glossario
Glossario vds06
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 

Semelhante a CSRF e OAuth2 (20)

O auth2 e open id connect
O auth2 e open id connectO auth2 e open id connect
O auth2 e open id connect
 
134318809 seguranca
134318809 seguranca134318809 seguranca
134318809 seguranca
 
Politicas de segurança
Politicas de segurançaPoliticas de segurança
Politicas de segurança
 
Brasil Cidadão - SDK V.1.4
Brasil Cidadão - SDK V.1.4Brasil Cidadão - SDK V.1.4
Brasil Cidadão - SDK V.1.4
 
PHP SSO no Zentyal
PHP SSO no ZentyalPHP SSO no Zentyal
PHP SSO no Zentyal
 
Certificados Digitais
Certificados DigitaisCertificados Digitais
Certificados Digitais
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
IdentityServer 4
IdentityServer 4IdentityServer 4
IdentityServer 4
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
 
Manual de instalação de https no iis7 2
Manual de instalação de https no iis7   2Manual de instalação de https no iis7   2
Manual de instalação de https no iis7 2
 
S+S Day - Segurança na nuvem
S+S Day - Segurança na nuvemS+S Day - Segurança na nuvem
S+S Day - Segurança na nuvem
 
OWASP Top 10 - A2 2017 Broken Authentication
OWASP Top 10 - A2 2017 Broken AuthenticationOWASP Top 10 - A2 2017 Broken Authentication
OWASP Top 10 - A2 2017 Broken Authentication
 
Maria certificado
Maria certificadoMaria certificado
Maria certificado
 
Certificado.ppt
Certificado.pptCertificado.ppt
Certificado.ppt
 
Abordagem sistemática da infra-estrutura de chave pública
Abordagem sistemática da infra-estrutura de chave públicaAbordagem sistemática da infra-estrutura de chave pública
Abordagem sistemática da infra-estrutura de chave pública
 
Glossario
Glossario Glossario
Glossario
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 

CSRF e OAuth2