Er Galvão Abbott apresenta técnicas de programação PHP segura para minimizar riscos de segurança em aplicações web. O documento discute as principais causas de falhas de segurança, como injeção e autenticação, e soluções como filtragem de dados e criptografia. Embora essas soluções sejam conhecidas há muito tempo, a segurança ainda não é prioridade devido a fatores como pressa por entregas e desconhecimento.
1. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 1 / 35
Unbreakable PHP www.galvao.eti.br
2. Quem?!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 2 / 35
www.galvao.eti.brUnbreakable PHP
Er Galvão Abbott trabalha há mais de 18 anos
desenvolvendo sistemas e aplicações com interface web, sendo
13 anos com PHP e 5 anos com Zend Framework. Trabalhou
com diversas empresas de grande porte, tanto nacionais como
internacionais.
Palestra em eventos, dá cursos em diversas instituições e
é Presidente da ABRAPHP – Associação Brasileira de
Profissionais PHP e Diretor da PHP Conference Brasil, o principal
evento de PHP da América Latina.
É o fundador e líder do GU PHPBR, Grupo de Usuários
de abrangência nacional, que hoje conta com mais de 1.200
usuários cadastrados.
Site: http://www.galvao.eti.br/
Twitter: @galvao
Slides e Documentos: http://slideshare.net/ergalvao
https://speakerdeck.com/galvao
Fork me @ http://github.com/galvao
3. Objetivo
Esta palestra tem por objetivo demonstrar técnicas de programação PHP que minimizam
os principais riscos de segurança a uma aplicação web, além de analisar as principais causas
da alarmante frequência com que falhas de segurança são exploradas na web.
Serão apresentados os seguintes tópicos:
→ Cenário atual
→ Falhas de segurança
→ Injeção
→ Autenticação e Criptografia
→ Causas para a situação atual
→ De quem é a culpa?
→ Soluções
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 3 / 35
www.galvao.eti.brUnbreakable PHP
11. Falhas de Segurança
Dos 10 Riscos mais comuns
a Aplicações Web...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 11 / 35
www.galvao.eti.brUnbreakable PHP
8 são relacionados a código-fonte*
Ah, então é culpa do programador!
Será...?
(*) Fonte: OWASP Top 10 2013
12. Os 3 primeiros problemas...
Injeção (SQL, Client-side, etc...)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 12 / 35
www.galvao.eti.brUnbreakable PHP
(*) Fonte: OWASP Top 10 2013
Autenticação e Gerenciamento de
Sessão Falhos
XSS
13. Com uma solução em comum...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 13 / 35
www.galvao.eti.brUnbreakable PHP
Isso é sabido desde antes de 2000
Filtrar e Validar
Pra deixar bem claro...
há mais de 13 anos
14. Filtragem e Validação FTW!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 14 / 35
www.galvao.eti.brUnbreakable PHP
(de uma palestra minha, há mais de 4 anos)
15. Filtragem e Validação NATIVAS FTW!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 15 / 35
www.galvao.eti.brUnbreakable PHP
(Nativas desde o PHP 5.2, lançado há praticamente 7 anos)
16. Quem tem medo de Injeção de SQL?! PDO FTW!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 16 / 35
www.galvao.eti.brUnbreakable PHP
(Nativa desde o PHP 5.1, lançado há praticamente 8 anos)
17. Criptografia FTW!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 17 / 35
www.galvao.eti.brUnbreakable PHP
Quem disse que Mcrypt é difícil?!
1. Escolha uma cifra
2. Defina uma chave
3. Defina um vetor de inicialização
4. Defina um modo
5. Divirta-se!
É, divirta-se!
18. Mcrypt FTW!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 18 / 35
www.galvao.eti.brUnbreakable PHP
(disponível há muito tempo**)
19. O(s) problema(s) com segurança?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 19 / 35
www.galvao.eti.brUnbreakable PHP
Torna o sistema Lento
Demanda muito Tempo
É muito Complicado
É um assunto muito Misterioso
É um assunto pra Depois
20. O(s) problema(s) com segurança?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 20 / 35
www.galvao.eti.brUnbreakable PHP
Torna o sistema Lento
Demanda muito Tempo
É muito Complicado
É um assunto muito Misterioso
É um assunto pra Depois
21. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 21 / 35
Unbreakable PHP www.galvao.eti.br
Misterioso?!?!?! OWASP FTW!
www.owasp.org
É um assunto muito Misterioso
Top 10
Zed Attack Proxy
ASVS
Cheat Sheets
22. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 22 / 35
Unbreakable PHP www.galvao.eti.br
Pra quando?!
Security First,
É um assunto pra Depois
Security Always!
23. O(s) problema(s) com segurança?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 23 / 35
www.galvao.eti.brUnbreakable PHP
A Diretoria...
só quer Sucesso
24. O(s) problema(s) com segurança?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 24 / 35
www.galvao.eti.brUnbreakable PHP
A Diretoria...
só quer Sucesso
O Gerente de Projetos...
só quer Prazo
25. O(s) problema(s) com segurança?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 25 / 35
www.galvao.eti.brUnbreakable PHP
A Diretoria...
só quer Sucesso
O Comercial...
só quer Vender
O Gerente de Projetos...
só quer Prazo
26. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 26 / 35
www.galvao.eti.brUnbreakable PHP
A Infra...
não quer se Incomodar
O(s) problema(s) com segurança?
27. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 27 / 35
www.galvao.eti.brUnbreakable PHP
O Programador...
só quer programar!
A Infra...
não quer se Incomodar
O(s) problema(s) com segurança?
28. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 28 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
29. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 29 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
SIM!
30. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 30 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
SIM!SIM!
SIM!
31. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 31 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
SIM!
SIM!
SIM!
32. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 32 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
SIM!
SIM!
SIM!
SIM!
33. Culpa de quem, mesmo?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 33 / 35
www.galvao.eti.brUnbreakable PHP
A culpa é da Diretoria?
A culpa é do GP?
A culpa é do Comercial?
A culpa é da Infra?
A culpa é do Programador?
SIM!
SIM!
SIM!
SIM!
SIM!
34. E se não estiver convencido(a) ainda, tem outra...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 34 / 35
www.galvao.eti.brUnbreakable PHP
INGENUIDADE
35. Obrigado! (… e “desculpa qualquer coisa!”)
? Dúvidas?
↓ Críticas?
↑ Elogios?!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/4/13 - 35 / 35
www.galvao.eti.brUnbreakable PHP