O documento apresenta uma palestra sobre segurança em aplicações web ministrada pelo professor Alex Camargo. A palestra aborda três principais tipos de ataques: Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) e SQL Injection. O professor demonstra como esses ataques funcionam e apresenta boas práticas de programação para preveni-los, como filtrar entradas e escapar saídas.
Aula 04 - Injeção de código (Cross-Site Scripting)
Segurança em aplicações web: pequenas ideias, grandes resultados
1. Segurança em aplicações web:Segurança em aplicações web:
pequenas ideias, grandes resultadospequenas ideias, grandes resultados
Prof. Alex Camargo
alexcamargoweb@gmail.com
UNIVERSIDADE FEDERAL DO PAMPA
CAMPUS BAGÉ
ENGENHARIA DE COMPUTAÇÃO
2. 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
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
3. 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
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
4. 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
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
5. 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
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
6. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
7. Esta palestra NÃO é sobre...
Segurança em servidores.
Configuração de servidores.
Firewalls.
DNS, FTP, SSH, HTTPS.
DoS, IP spoofing, phishing.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
10. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
11. 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)
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
12. 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)
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
Fonte: (Gartner, 2008)
13. Introdução
Principais causas das vulnerabilidades:
Imaturidade em segurança
Desenvolvimento in-house
Restrições de recursos e tempo
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
14. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
15. Aplicações web
Como funcionam as aplicações web?
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
16. Aplicações Web
Como funcionam as aplicações web?
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
18. 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...
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
19. 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)
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
20. 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)
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
21. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
23. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
24. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
25. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
26. Cross-Site Request Forgery (CSRF)
Demonstração: CSRF
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
27. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
28. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
29. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
30. SQL Injection
Demonstração: SQL Injection
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
31. Boas práticas em PHP
URLs seguras e amigáveis.
Senhas criptografadas.
Monitore os erros de senha.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
32. 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.
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
33. 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/
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
34. Fim
Agradeço a atenção de todos.
Dúvidas, críticas ou sugestões?
Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo
alexcamargoweb@gmail.com