Autenticação e segurança no ASP.NET – Parte 2
Salt: Autenticação e segurança no ASP.NET – Parte 3
Quando a TI teve seu início de forma popular e maciça no Brasil na última década do século XX, a segurança era um fator importante, mas não era um fator de natureza estratégica como é hoje, possivelmente por não existirem os ataques e os profissionais da informação que temos hoje.
Naquela época, ainda não éramos a "Sociedade da Informação”, a internet ainda estava engatinhando. Aqui no Brasil, muitos usuários da internet conheceram as primeiras modalidades de ataques através do antigo IRC (Internet Relay Chat), no qual utilizavam um software chamado mIrc, criado por Khaled Mardam-Bey.
No que tange a segurança de aplicações web veremos os conceitos de autenticação e autorização. O sucesso ou a falha de um bom projeto de segurança em uma aplicação web se resume a estas duas palavras.
Não creia que o seu site, feito nesta ou naquela linguagem de programação, que é julgada "inofensiva, simples e segura" não atrairá a atenção de algum atacante. Muitas vezes, a origem dos ataques está dentro da organização, mais até que os ataques externos. O seu site pode e deve ser atingido ou atacado até por um port scanners que fluem por toda a internet. Todos os dias, milhares de pacotes UDP e TCP com destinos aleatórios navegam na internet com o intuito de atingir e identificar vulnerabilidades de servidores mal configurados e mal dimensionados.
Muito se tem feito no campo da Segurança de Aplicações Web e muito se tem debatido sobre o assunto em larga escala, a ponto de um grupo de grandes empresas se unir para difundir e criar as melhores práticas em segurança da informação baseadas em boletins e estatísticas anuais de ataques em todo o mundo. Esta união de empresas deu início a OWASP (BOX 1).
O Open Web Application Security Project, ou Projeto Aberto para Segurança de Aplicações Web, é uma organização mundial sem fins lucrativos focada na melhoria da segurança de software de uma forma geral, tendo ênfase em segurança na web. Qualquer pessoa pode participar livremente da OWASP e todo o seu material está disponível sobre licença de software livre e aberto.
No site da OWASP podemos encontrar muitas fontes de informação sobre aplicações seguras em ASP.NET, Java e outras linguagens.
Principais ataques às aplicações ASP.NET
Vamos verificar agora os ataques mais comuns a aplicações ASP.NET. A OWASP criou uma literatura intitulada “Os dez riscos mais críticos em aplicações web”. Todos os anos o seu top 10 é divulgado, e também difunde sua metodologia de Taxa de Riscos, onde dispõe de uma escala, como podemos ver na Figura 1.
Figura 1. Metodologia para mensurar a Taxa de Riscos
De acordo com a própria OWASP, esta metodologia foi criada porque somente o desenvolvedor sabe os detalhes de seu ambiente e por isso é a pessoa mais indicada para fazer tal avaliação de segurança. Vamos a apresentação dos dez riscos.
Injeção
Falhas por injeção, tais como Injeção por SQL, Injeção no Sistema Operacional ou Injeção via LDAP, ocorrem quando um dado não confiável é enviado para a aplicação como parte de um comando ou consulta. O atacante utiliza de um dado malicioso que pode fazer com que a aplicação execute comandos de forma não intencional, acessando e/ou gravando dados não autorizados.
Quebra de autenticação e Gerenciamento de Sessões
Métodos da aplicação, responsáveis pela autenticação e gerenciamento de sessão, que não são implementados, quase sempre, da forma correta e permitem ao atacante comprometer o uso de senhas, chaves e variáveis de sessão ou explorar via exploit alguma falha capaz de fazê-lo assumir a identidade de algum usuário do sistema, causando grande dano ao sistema e principalmente à organização.
Cross-Site Scripting (XSS)
Sem tradução exata para a nosso idioma, é um ataque que ocorre sempre que uma aplicação gera dados não confiáveis e os envia a um navegador sem a validação correta e o tratamento adequado. Este ataque permite a execução remota de scripts ou trechos de códigos no navegador da vítima para roubar, ou sequestrar (hijacking) suas sessões abertas, pichar web sites, mudando a sua página inicial, ou redirecionar o usuário para sites com conteúdo impróprio com o intuito de roubar seus dados (phishing).
Referência Direta a objetos internos de forma insegura
Uma referência direta a um objeto ocorre quando um desenvolvedor expõe uma referência interna através da implementação de um objeto, tais como um arquivo, um diretório ou uma senha de banco de dados. Sem um controle para checar o acesso ou qualquer outro tipo de proteção, um atacante pode acessar e manipular estas referências através deste objeto exposto para ganhar acesso a dados sensíveis.
Configuração de Segurança feita incorretamente
Boa segurança significa ter configuração segura e estável e implementadas pela aplicação, frameworks, servidores e plataforma. Todas essas configurações devem ser definidas, implementadas e mantidas, já que em sua totalidade, estas ferramentas vêm sempre com suas configurações padrão de segurança, o que hoje em dia não é o suficiente.
Isso também inclui a manutenção de todos os softwares para se manterem atualizados, juntamente com todas as bibliotecas usadas pela aplicação.
Exposição de dados estratégicos
Muitas aplicações web não protegem corretamente seus dados mais críticos e sensíveis, tais como CPFs, códigos de cartão de crédito, números de identidades, números de Carteiras de Habilitação, Renavans e principalmente credenciais para autenticação com hashing e criptografia apropriadas e estáveis.
O atacante pode roubar ou modificar estes dados protegidos de forma inconsistente, insegura e principalmente fraca para gerar roubo de identidade, fraudes de cartões de créditos, dentre outros crimes que já conhecemos.
Falta de métodos para controlar o nível de
acesso dos usu ...
Black November Desconto exclusivo para as primeiras 200 matrículas! Pagamento anual 12x no cartão De: R$ 69,00 Por: R$ 54,90 Total: R$ 658,80 Garanta o desconto Pagamento recorrente Cobrado mensalmente no cartão De: R$ 79,00 Por: R$ 54,90 /mês Total: R$ 658,80 Garanta o desconto Eu sabia pouquíssimas coisas de programação antes de começar a estudar com
vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa
bagagem consegui um estágio logo no início do meu primeiro
período na faculdade. Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo. Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a
pena, pois a plataforma é bem intuitiva e muuuuito
didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito
obrigado! Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento
front-end, tinha coisas que eu ainda não tinha visto. A
didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado,
adorando demais. Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É
um passo a passo incrível. Só não aprende quem não quer.
Foi o melhor investimento da minha vida! Foi um dos melhores investimentos que já fiz na vida e tenho aprendido
bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da
programação, irei assinar meu contrato como programador
graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana,
aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem
como não aprender, estão de parabéns! Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de
seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com
React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo
muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na
área. Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.Confira outros conteúdos:
<Perguntas frequentes>
Nossos casos de sucesso
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!