UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ENGENHARIA DE COMPUTAÇÃO Segurança em aplicações web: pequenas ideias, grandes resultados alexcamargoweb@gmail.com
Sobre o professor Formação acadêmica: Bacharel em Sistemas de Informação (URCAMP, 2010) TCC: Web sistema integrado a uma rede social para academias de ginástica. Orientador: Prof. Me. Abner Guedes Especialista em Sistemas Distribuídos com Ênfase em Banco de Dados (UNIPAMPA, 2013) TCC: Interligando bases de dados do sistema Controle de Marcas e Sinais utilizando o MySQL Cluster. Orientadores: Prof. Me. Érico Amaral e Prof. Me. Rafael Bastos
Sobre o professor Formação acadêmica: Mestrando em Engenharia de Computação (FURG, 2016) Linha de pesquisa: Bioinformática. Orientador: Ainda não definido
Sobre o professor Antes da UNIPAMPA: Programador Web e DBA Local: Prefeitura Municipal de Bagé Professor das disciplinas de Banco de Dados e Análise de Sistemas Local: Capacitar Escola Técnica
Sobre o professor Atualmente: Professor da disciplina de Algoritmos e Programação Turmas: Engenharia de Computação, Engenharia de Alimentos, Engenharia de Energias Renováveis e Ambiente, Engenharia Química e Licenciatura em Física Professor da disciplina de Laboratório de Programação II Turma: Engenharia de Computação
Esta palestra é sobre... Segurança em aplicações web. Boas práticas de programação. Erros comuns. Tipos de ataques. Foco na implementação com PHP e MySQL Pode ser aplicado para outras linguagens e bancos de dados.
Esta palestra NÃO é sobre... Segurança em servidores. Configuração de servidores. Firewalls. DNS, FTP, SSH, HTTPS. DoS, IP spoofing, phishing.
The beginning...
The beginning
Introdução Atualmente as vulnerabilidades nas aplicações web são o maior vetor para os ataques contra a segurança de TI. Falhas ou em erros de programação nas linguagens usadas para aplicações web (Java,.NET, PHP, Python, Perl, Ruby, etc). Tais vulnerabilidades podem ser complexas e se manifestarem em muitas situações diferentes.
Introdução Porque segurança em aplicações é prioridade? 75% dos ataques acontecem na camada da aplicação (Gartner) 90% dos sites são vulneráveis à ataques (Watchfire) 78% das vulnerabilidades facilmente exploráveis afetam aplicações web (Symantec)
Introdução Porque segurança em aplicações é prioridade? 75% dos ataques acontecem na camada da aplicação (Gartner) 90% dos sites são vulneráveis à ataques (Watchfire) 78% das vulnerabilidades facilmente exploráveis afetam aplicações web (Symantec) Fonte: (Gartner, 2008)
Introdução Principais causas das vulnerabilidades: Imaturidade em segurança Desenvolvimento in-house Restrições de recursos e tempo
Introdução Por que o PHP? Facilidade, rapidez, versatilidade, etc. Ampla documentação e cases de sucesso. Acabou se tornando a linguagem server-side mais utilizada na web.
Aplicações web Como funcionam as aplicações web?
Aplicações Web Como funcionam as aplicações web?
Vamos à prática...
Tipos de ataque Nesta palestra serão abordadas as principais ameaças a aplicações web, dentre elas: Cross-Site Scripting (XSS) Cross-Site Request Forgery (CSRF) SQL Injection Outras vulnerabilidades...
Cross-Site Scripting (XSS) O atacante normalmente explorará essa falha inserindo tags e código Javascript no seu HTML. Tags <iframe> chamando páginas maliciosas Código js para ler os cookies do usuário Código js para alterar as informações do site (defacement)
Cross-Site Scripting (XSS) O atacante normalmente explorará essa falha inserindo tags e código Javascript no seu HTML. Tags <iframe> chamando páginas maliciosas Código js para ler os cookies do usuário Código js para alterar as informações do site (defacement)
Cross-Site Scripting (XSS) Para se proteger, basta: Filtrar a entrada strip_tags: Retira as tags HTML e PHP de uma string. Escapar a saída htmlespecialchars: Exibe as tags HTML sem interpretá-las.
Cross-Site Scripting (XSS) Demonstração: XSS
Cross-Site Request Forgery (CSRF) Como o nome diz, consiste em tentar forjar uma requisição de um site para outro. O ataque pode ser feito da seguinte forma: Você recebe um e-mail com uma URL oculta, geralmente algum e-mail do tipo "Veja as nossas fotos". Esta URL executa alguma ação em uma aplicação que você esteja autenticado no momento (por exemplo, o Facebook). Esta ação pode dar poderes ao atacante para remover os seus dados (ou do seu cliente) permanentemente.
Cross-Site Request Forgery (CSRF) Como o nome diz, consiste em tentar forjar uma requisição de um site para outro. O ataque pode ser feito da seguinte forma: Você recebe um e-mail com uma URL oculta, geralmente algum e-mail do tipo "Veja as nossas fotos". Esta URL executa alguma ação em uma aplicação que você esteja autenticado no momento (por exemplo, o Facebook). Esta ação pode dar poderes ao atacante para remover os seus dados (ou do seu cliente) permanentemente.
Cross-Site Request Forgery (CSRF) Como se defender do CSRF? O método GET deve ser utilizado apenas para consultas Exibição de páginas, listagens, pesquisas. O método POST deve ser utilizado para as operações Cadastros, atualização, exclusão, autenticação. Utilizar tokens na sessão Gerados de forma aleatória e comparados ao receber a sessão.
Cross-Site Request Forgery (CSRF) Demonstração: CSRF
SQL Injection Entre as vulnerabilidades citadas, o SQL Injection é uma das mais destrutivas, tanto para a aplicação quanto para os seus usuários. Entrada do usuário inserida em comandos SQL. Informação maliciosa fornecida pelo atacante engana o interpretador. Uma exploração da injeção de SQL bem sucedida pode ler/alterar/excluir dados sigilosos do banco de dados.
SQL Injection Entre as vulnerabilidades citadas, o SQL Injection é uma das mais destrutivas, tanto para a aplicação quanto para os seus usuários. Entrada do usuário inserida em comandos SQL. Informação maliciosa fornecida pelo atacante engana o interpretador. Uma exploração da injeção de SQL bem sucedida pode ler/alterar/excluir dados sigilosos do banco de dados.
SQL Injection Felizmente, é muito fácil se proteger contra esse tipo de ataque. Basta escapar os dados enviados nas queries mysql_escape_string: Escapa uma string para usar em uma consulta MySQL. addslashes: Adiciona barras invertidas a uma string.
SQL Injection Demonstração: SQL Injection
Boas práticas em PHP URLs seguras e amigáveis. Senhas criptografadas. Monitore os erros de senha.
Considerações finais Crie o hábito de programar de forma segura. Toda entrada deve ser filtrada e toda saída deve ser escapada. Visualize as brechas e implemente soluções simples para elas. Esteja atualizado.
Referências PROBLEMAS COMUNS DE SEGURANÇA EM APLICAÇÕES WEB http://klauslaube.com.br/2012/04/15/problemas-de-seguranca-em-aplicacoes-web.html MANUAL DO PHP http://php.net/ (IN)SEGURANÇA EM APLICAÇÕES WEB http://www.detaileventos.com.br/ibm_dc2008/download/(in)seguranca%20em%20aplicacoes %20Web.pdf SEGURANÇA PARA APLICAÇÕES WEB http://www.siteblindado.com/pt/pags/view/files/whitepaper+qualysguard+vulnerability+web+applic ations.pdf SEGURANÇA EM APLICAÇÕES WEB COM PHP http://pt.slideshare.net/gedvan/segurana-em-aplicaes-web-com-php-8676135 SEGURANÇA EM PHP - BLINDE SEU CÓDIGO DE VOCÊ MESMO! http://pt.slideshare.net/gustavonevesgn/segurana-em-php-blinde-seu-cdigo-de-voc-mesmo WEB HACKING: ATAQUES E VULNERABILIDADES EM APLICAÇÕES WEB http://blog.corujadeti.com.br/web-hacking-ataques-e-vulnerabilidades-em-aplicacoes-web/
Fim Agradeço a atenção de todos. Dúvidas, críticas ou sugestões? alexcamargoweb@gmail.com