0
Desenvolvimento de Código Seguro em PHP
                     com Zend Framework




www.fgsl.eti.br. É livre a reprodução,...
Quem sou eu?




www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
agenda
         ●     Segurança
         ●     Poder e responsabilidade
         ●     Princípios de Segurança
         ● ...
Segurança
                                                                                        QUEM SABE O MAL
        ...
Segurança

           Perguntas:

           ●
               A segurança é uma opção?

           ●
               Podemo...
Segurança

            Respostas

            ●
                A segurança nunca será suficiente.

            ●
        ...
Segurança




               PHP é seguro?

www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Poder e Responsabilidade
                                oferece um rico conjunto de ferramentas com imenso
              ...
Poder e Responsabilidade


                                   PODER
                    que usado com cuidado, serve para ...
Poder e Responsabilidade

             Ou seja, o HEROI pode se tornar o VILÃO




                                      F...
Poder e Responsabilidade

                                  A maior vulnerabilidade do PHP




                           ...
Princípios de Segurança

         1)A aplicação não sabe onde e quando será
           atacada.
         2)A aplicação só ...
Princípios de Segurança

                POR OUTRO LADO...


         1)O invasor pode escolher o ponto mais fraco.
      ...
Princípios de Segurança

                OU SEJA, VOCÊ ESTÁ
       NA SEGUINTE SITUAÇÃO:


              Dilema do Defenso...
Princípios de Segurança

                Alguns aspectos para se preocupar:

       ●Os dados que entram...
       ●Os dad...
Princípios de Segurança




        Conclusão: você precisa de ajuda para
        implementar segurança nas aplicações



...
Princípios de Segurança


                                                                           Como seria
          ...
Princípios de Segurança




                           Imagem da série Head First. O'Reilly Media.

www.fgsl.eti.br. É liv...
Princípios de Segurança



                                                                              Zend
            ...
Princípios de Segurança
                               A segurança começa na aquitetura!


   HTTP

   REQUEST
           ...
CONTROLADOR FRONTAL
                                       Princípios de Segurança

                              A segura...
Princípios de Segurança


                                                                        Mas isso é suficiente?

...
Toda entrada está contaminada -
             filtre




     Motoqueiro Fanstasma é marca registradas da Marvel (www.marve...
Toda entrada está contaminada -
                       filtre




                                                        ...
Toda entrada está contaminada -
                       filtre




                                                        ...
Toda entrada está contaminada -
                       filtre




                                                        ...
Anule efeitos indesejados na saída


     APLICAÇÃO




BANCO DE DADOS
                      Fonte: http://1.bp.blogspot.c...
Anule efeitos indesejados na saída


     APLICAÇÃO




BANCO DE DADOS
                 Fonte: http://www.plurall.com/blog...
Anule efeitos indesejados na saída


     APLICAÇÃO




         Zend_View


BANCO DE DADOS


                 Fonte 1: ht...
Evite ataques CSRF
Evite ataques CSRF
Evite ataques CSRF




<form action=”algumacoisa.com/fazer.php”>
Evite ataques CSRF




Zend_Filter   Zend_Form    Zend_Validate
Segurança entre o banco de dados
         e a aplicação
Segurança entre o banco de dados
         e a aplicação


http://www.gambiarra.com.br/apagar.php?id=42

               $id...
Segurança entre o banco de dados
           e a aplicação


    http://www.coisacerta.com.br/controller/apagar/id/42

    ...
Segurança entre o banco de dados
                   e a aplicação
                                                 SEGURAN...
Segurança entre o banco de dados
                   e a aplicação
                     Plugins podem injetar filtros e val...
Autenticação




Autenticar significa verificar se alguém é
 quem diz ser baseado em uma série de
              credenciai...
Autenticação

O componente Zend_Auth usa o padrão
de projeto Adapter para autenticar
contra um tipo particular de serviço ...
Autorização




 Autorização é o ato de determinar se alguém
tem permissões para executar uma ação sobre
              um ...
Autorização




NÃO SE META ONDE NÃO É CHAMADO!
Autorização


     RBAC – Role Based Access Control

►Papéis: quem solicita a ação;
►Recursos: o que está sendo ativado;
►...
Autorização
   Para papéis, o ZF tem Zend_Acl_Role.
 Para recursos, ele tem Zend_Acl_Resource.

 Os direitos são controlad...
Autorização




Você pode trabalhar com lista negra, mas é
     menos comum e menos seguro.
Perguntas?




www.fgsl.eti.br
MUITO OBRIGADO!
Mais informações
●   Zend Framework website http://framework.zend.com
●   Zend Developer Zone http://devzone.zend.com
●   ...
Upcoming SlideShare
Loading in...5
×

Desenvolvimento em Código Seguro para PHP com Zend Framework

3,022

Published on

Palestra proferida no XI FISL em 2010.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,022
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
60
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×