Desenvolvimento em Código Seguro para PHP com Zend Framework

3.472 visualizações

Publicada em

Palestra proferida no XI FISL em 2010.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.472
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
61
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvimento em Código Seguro para PHP com Zend Framework

  1. 1. Desenvolvimento de Código Seguro em PHP com Zend Framework www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  2. 2. Quem sou eu? www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  3. 3. agenda ● Segurança ● Poder e responsabilidade ● Princípios de Segurança ● Toda entrada está contaminada - filtre ● Anule efeitos indesejados na saída ● Evite ataques CSRF ● Segurança entre o banco de dados e aplicação ● Autenticação ● Autorização www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  4. 4. Segurança QUEM SABE O MAL QUE SE ESCONDE NO CORAÇÃO DOS HOMENS? O Sombra é uma marca registrada da DC Comics (http://www.dccomics.com). Fonte: http://mlpeters.com/The%20Shadow.jpg www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  5. 5. Segurança Perguntas: ● A segurança é uma opção? ● Podemos ter segurança total? ● Soluções de segurança têm efeito permanente? ● Segurança custa pouco? www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  6. 6. Segurança Respostas ● A segurança nunca será suficiente. ● A segurança custa caro. ● A segurança não garante nenhum retorno, mas sua falta pode causar prejuízos. ● Sistemas mais seguros = menos amigáveis (e às vezes menos performáticos) www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  7. 7. Segurança PHP é seguro? www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  8. 8. Poder e Responsabilidade oferece um rico conjunto de ferramentas com imenso PODER Hulk é uma marca registrada da Marvel (www.marvel.com). Todos os direitos reservados. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  9. 9. Poder e Responsabilidade PODER que usado com cuidado, serve para criar aplicações complexas e robustas... ...mas que também pode ser usado por usuários maliciosos para atacar aplicações de diversos modos. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  10. 10. Poder e Responsabilidade Ou seja, o HEROI pode se tornar o VILÃO Fênix e Fênix Negra são marcas registradas da Marvel (www.marvel.com). Todos os direitos reservados. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  11. 11. Poder e Responsabilidade A maior vulnerabilidade do PHP http://faculty.mdc.edu/slewis/Inmates%20and%20Friends_files/Computer%20Nerd.jpg www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  12. 12. Princípios de Segurança 1)A aplicação não sabe onde e quando será atacada. 2)A aplicação só pode se defender de ataques conhecidos. 3)A aplicação tem que vigiar o tempo todo. 4)A aplicação tem que respeitar as regras (a menos que tenha sido feita pelo Batman). Batman é marca registradas da DC Comics (www.dccomics.com). Todos os direitos reservados. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  13. 13. Princípios de Segurança POR OUTRO LADO... 1)O invasor pode escolher o ponto mais fraco. 2)O invasor pode investigar vulnerabilidades desconhecidas. 3)O invasor pode atacar a qualquer momento. 4)O invasor pode jogar sujo. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  14. 14. Princípios de Segurança OU SEJA, VOCÊ ESTÁ NA SEGUINTE SITUAÇÃO: Dilema do Defensor X Vantagem do Invasor Duende Verde é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  15. 15. Princípios de Segurança Alguns aspectos para se preocupar: ●Os dados que entram... ●Os dados que saem... ●O acesso à aplicação... ●As permissões para cada recurso... ●A manipulação do banco de dados... ●E não pára por aí... www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  16. 16. Princípios de Segurança Conclusão: você precisa de ajuda para implementar segurança nas aplicações www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  17. 17. Princípios de Segurança Como seria maravilhoso se houvesse algo que ajudasse a tornar minha aplicação PHP mais segura... mas deve ser um sonho... Imagem da série Head First. O'Reilly Media. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  18. 18. Princípios de Segurança Imagem da série Head First. O'Reilly Media. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  19. 19. Princípios de Segurança Zend Framework ajuda a lidar com aspectos de código seguro! Imagem da série Head First. O'Reilly Media. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  20. 20. Princípios de Segurança A segurança começa na aquitetura! HTTP REQUEST Controlador Frontal C v M www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  21. 21. CONTROLADOR FRONTAL Princípios de Segurança A segurança começa na arquitetura! APLICAÇÃO CASTELO DE BODIAM, SUSSEX, INGLATERRA Século XIV www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  22. 22. Princípios de Segurança Mas isso é suficiente? Homer Simpson é uma marca registrada do grupo Fox www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  23. 23. Toda entrada está contaminada - filtre Motoqueiro Fanstasma é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados. NEM PENSE EM USAR REGISTER GLOBALS
  24. 24. Toda entrada está contaminada - filtre Fonte: http://victorywebproductions.com/images/website1.jpg Fonte: http://img.vivaolinux.com.br/imagens/artigos/comunidade/usuario.jpg
  25. 25. Toda entrada está contaminada - filtre Fonte: http://victorywebproductions.com/images/website1.jpg Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
  26. 26. Toda entrada está contaminada - filtre Fonte: http://victorywebproductions.com/images/website1.jpg Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif Zend_Filter_Input
  27. 27. Anule efeitos indesejados na saída APLICAÇÃO BANCO DE DADOS Fonte: http://1.bp.blogspot.com
  28. 28. Anule efeitos indesejados na saída APLICAÇÃO BANCO DE DADOS Fonte: http://www.plurall.com/blogs/roosevelt/wp-content/uploads/2009/08/fake_smile_by_shittyliquor.jpg
  29. 29. Anule efeitos indesejados na saída APLICAÇÃO Zend_View BANCO DE DADOS Fonte 1: http://www.plurall.com/blogs/roosevelt/wp-content/uploads/2009/08/fake_smile_by_shittyliquor.jpg Fonte 2: http://1.bp.blogspot.com
  30. 30. Evite ataques CSRF
  31. 31. Evite ataques CSRF
  32. 32. Evite ataques CSRF <form action=”algumacoisa.com/fazer.php”>
  33. 33. Evite ataques CSRF Zend_Filter Zend_Form Zend_Validate
  34. 34. Segurança entre o banco de dados e a aplicação
  35. 35. Segurança entre o banco de dados e a aplicação http://www.gambiarra.com.br/apagar.php?id=42 $id = $_GET['id']; $sql = 'DELETE FROM STUDENTS WHERE ID = '.$id; pg_query($connection, $sql);
  36. 36. Segurança entre o banco de dados e a aplicação http://www.coisacerta.com.br/controller/apagar/id/42 $id = $this->getRequest()->getParam('id'); $table->delete($table->getAdapter()->quoteInto('ID = ?',$id));
  37. 37. Segurança entre o banco de dados e a aplicação SEGURANÇA É COMO UMA CEBOLA... Shrek é uma marca registrada da Dreamworks (http://www.dreamworksanimation.com). Todos os direitos reservados. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  38. 38. Segurança entre o banco de dados e a aplicação Plugins podem injetar filtros e validadores C www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  39. 39. Autenticação Autenticar significa verificar se alguém é quem diz ser baseado em uma série de credenciais.
  40. 40. Autenticação O componente Zend_Auth usa o padrão de projeto Adapter para autenticar contra um tipo particular de serviço de autenticação, tal como: ● LDAP ● SGBD ● Armazenamento baseado em arquivos
  41. 41. Autorização Autorização é o ato de determinar se alguém tem permissões para executar uma ação sobre um dado recurso.
  42. 42. Autorização NÃO SE META ONDE NÃO É CHAMADO!
  43. 43. Autorização RBAC – Role Based Access Control ►Papéis: quem solicita a ação; ►Recursos: o que está sendo ativado; ►Direitos: os privilégios que um papel tem para um dado recurso.
  44. 44. Autorização Para papéis, o ZF tem Zend_Acl_Role. Para recursos, ele tem Zend_Acl_Resource. Os direitos são controlados pelo componente integrador Zend_Acl. Zend_Acl trabalha por padrão com o conceito de lista branca: se nada for especificado, o acesso ao recurso é negado.
  45. 45. Autorização Você pode trabalhar com lista negra, mas é menos comum e menos seguro.
  46. 46. Perguntas? www.fgsl.eti.br
  47. 47. MUITO OBRIGADO!
  48. 48. Mais informações ● Zend Framework website http://framework.zend.com ● Zend Developer Zone http://devzone.zend.com ● ZFTutorials forum http://www.zftutorials.com ● Blogs ● Matthew Weier O'Phinney: http://weierophinney.net/matthew ● Cal Evans: http://blog.calevans.com ● Andries Seutens: http://andries.systray.be/blog ● Rob Allen: http://akrabat.com ● Zend Framework Brasil ● http://www.zfbrasil.com ● http://groups.google.com/group/zfbrasil

×