Apresentação sobre o desenvolvimento de APIs REST seguras com ASP.NET Core. Palestra realizada em 05/05/2018 durante o .NET Community Summit 2018, evento promovido pelo portal iMasters em São Paulo-SP.
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
2. • Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET e do .NET SP
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
3. Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
4. Agenda
• APIs REST - Contexto Atual
• Segurança da Informação e APIs REST
• JSON Web Tokens (JWT): uma visão geral
• Azure Web App on Linux: APIs seguras na nuvem
• HTTPS no ASP.NET Core 2.1
5. APIs REST - Contexto Atual
• Escalabilidade, disponibilidade e performance
• REST como principal estilo arquitetural
• Microserviços ganhando força
• Economia das APIs
6. APIs REST - Questões Fundamentais
• Modelagem
• Cultura de automação
• Estratégias de deployment
• Monitoramento
• Segurança
8. Desenvolvedores e a questão da Segurança
• Nunca vai acontecer comigo
• A aplicação é pequena, não há muitos
usuários
• O pessoal de TI é confiável
• Nossos usuários são leigos demais
9. E se essas “verdades” falharem?
• Injeção de SQL (SQL Injection)
• Acesso em produção com permissões
especiais
• Acesso indevido a informações confidenciais
10. O que torna possível a injeção de SQL?
• Concatenação de comandos e parâmetros
em strings
• Descuidos com a manipulação de query
strings em aplicações Web
14. Diminuindo o impacto – Injeção de SQL
• Evitando a concatenação de parâmetros em
comandos SQL
• Criar um usuário para a aplicação no
servidor de banco de dados, retirando
direitos de de execução de comandos do
tipo DDL (CREATE, DROP, ALTER)
• Utilizando soluções ORMs como Entity
Framework e NHibernate
15. Evitando o acesso indevido a informações
• Criptografia de arquivos de configuração
• Armazenar segredos em alguma solução
específica (Azure Key Vault, por exemplo)
• JWT (JSON Web Token) em APIs REST
• HTTPS em aplicações Web sempre (sites,
serviços, APIs)
16. JWT (JSON Web Tokens)
• Uso de tokens criptografados
• Bearer Authentication
• Emprega HMAC ou RSA
• Tecnologia multiplataforma
• Tokens formados por 3 partes (Header, Payload
e Signature)
19. JWT + ASP.NET Core – Integrações Possíveis
• Soluções customizadas para controle de
usuários
• ASP.NET Core Identity
• Active Directory (AD)
• IdentityServer
21. Aplicação
• API REST criada com o ASP.NET
Core 2.0
• Cadastro de produtos com
acesso empregando JWT
23. Azure Web App on Linux: APIs seguras na nuvem
• Hospedagem de aplicações
• Containers Docker em Linux
• Suporte a Continuous Integration
• HTTPS habilitado por default
25. Azure Web App on Linux
• Utilizar a imagem
renatogroffe/apiprodutos
26. HTTPS no ASP.NET Core 2.1
• Temos agora o uso de HTTPS
ativado por default
• Certificado de
desenvolvimento criado na
instalação do .NET Core
27. HTTPS no ASP.NET Core 2.1
• Redirecionamento automático
de HTTP para HTTPS
• Habilitado por default o uso do
protocolo HSTS (HTTP Strict
Transport Security)