Apresentação sobre boas práticas de segurança no acesso a dados em aplicações .NET. Palestra realizada em meetup promovido pelo grupo .NET SP em 26/09/2017 na cidade de São Paulo-SP.
2. Renato Groffe
◦ 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
6. 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
7. 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
8. 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
10. 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
◦ Retirar a possibilidade de execução de
comandos do tipo DDL (CREATE, DROP,
ALTER)
◦Utilizando soluções ORMs como Entity
Framework e NHibernate
14. Possíveis consequências
◦ Vazamento de informações confidenciais
◦ Prejuízos à imagem de uma organização
◦ Problemas jurídicos
◦ Perdas financeiras
15. Como evitar isto?
◦ Mascarar/Obfuscar dados
◦ Criptografia via aplicação e/ou base
de dados
◦ Definindo usuários e permissões de
acesso em uma base
17. Outros cuidados adicionais
◦ Criptografia de arquivos de configuração
◦ Armazenar segredos em alguma solução específica
(Azure Key Vault, por exemplo)
◦ HTTPS sem aplicações Web sempre (sites, serviços,
APIs)
◦ JWT (JSON Web Token) em APIs REST
◦ Implementação de exclusão lógica