SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Desenvolvimento de Código Seguro em PHP
                     com Zend Framework




www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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
         ●     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.
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.
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.
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.
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




                                                  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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Toda entrada está contaminada -
             filtre




     Motoqueiro Fanstasma é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados.



NEM PENSE EM USAR REGISTER GLOBALS
Toda entrada está contaminada -
                       filtre




                                                                             Fonte: http://victorywebproductions.com/images/website1.jpg
Fonte: http://img.vivaolinux.com.br/imagens/artigos/comunidade/usuario.jpg
Toda entrada está contaminada -
                       filtre




                                                                Fonte: http://victorywebproductions.com/images/website1.jpg



Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
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
Anule efeitos indesejados na saída


     APLICAÇÃO




BANCO DE DADOS
                      Fonte: http://1.bp.blogspot.com
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
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
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 = $_GET['id'];

$sql = 'DELETE FROM STUDENTS WHERE ID = '.$id;

          pg_query($connection, $sql);
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));
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.
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.
Autenticação




Autenticar significa verificar se alguém é
 quem diz ser baseado em uma série de
              credenciais.
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
Autorização




 Autorização é o ato de determinar se alguém
tem permissões para executar uma ação sobre
              um dado recurso.
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;
►Direitos: os privilégios que um papel tem para
um dado recurso.
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.
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
●   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

Mais conteúdo relacionado

Mais de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 

Mais de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Desenvolvimento em Código Seguro para PHP com Zend Framework

  • 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. Quem sou eu? www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  • 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. 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. 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. 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. Segurança PHP é seguro? www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Toda entrada está contaminada - filtre Fonte: http://victorywebproductions.com/images/website1.jpg Fonte: http://img.vivaolinux.com.br/imagens/artigos/comunidade/usuario.jpg
  • 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. 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. Anule efeitos indesejados na saída APLICAÇÃO BANCO DE DADOS Fonte: http://1.bp.blogspot.com
  • 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. 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
  • 32. Evite ataques CSRF <form action=”algumacoisa.com/fazer.php”>
  • 33. Evite ataques CSRF Zend_Filter Zend_Form Zend_Validate
  • 34. Segurança entre o banco de dados e a aplicação
  • 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. 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. 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. 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. Autenticação Autenticar significa verificar se alguém é quem diz ser baseado em uma série de credenciais.
  • 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. Autorização Autorização é o ato de determinar se alguém tem permissões para executar uma ação sobre um dado recurso.
  • 42. Autorização NÃO SE META ONDE NÃO É CHAMADO!
  • 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. 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. Autorização Você pode trabalhar com lista negra, mas é menos comum e menos seguro.
  • 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