SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
Segurança em Aplicações
Web com PHP


 Segurança em Aplicações Web com PHP             V Ensol
 Gedvan Dias                           22 de julho de 2011
Sobre mim
●
    Mestre em Informática pela UFPB
●
    Professor substituto no IFPB
       –   C, PHP, Comércio Eletrônico

●
    Professor na Faculdade IDEZ
       –   HTML/CSS/PHP

●
    Lexa Sistemas – www.lexasistemas.com.br
       –   Criação de sites em Drupal

●
    Letz – www.letz.com.br
       –   Rede social para divulgação de eventos

       Segurança em Aplicações Web com PHP                    V Ensol
       Gedvan Dias                                  22 de julho de 2011
Esta palestra é sobre
●
    Segurança em aplicações web
       –   Boas práticas de programação
       –   Erros comuns
       –   Detalhes do PHP
       –   Tipos de ataques a sites
       –   Autenticação e autorização
       –   Foco na implementação com PHP
            ●
                Pode ser aplicado para outras linguagens




      Segurança em Aplicações Web com PHP                            V Ensol
      Gedvan Dias                                          22 de julho de 2011
Esta palestra não é sobre
●
    Segurança de servidores
       –   Configuração de servidores
       –   Firewalls
       –   DNS, FTP, SSH, HTTPS, …
       –   DoS, IP spoofing, phising, …
       –   Spam




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
Segurança e a linguagem PHP
●
    Por que PHP?
●
    PHP surgiu de forma despretensiosa
●
    Acabou se tornando a linguagem server-side
    mais utilizada na web
       –   Facilidade, rapidez, versatilidade, etc.




      Segurança em Aplicações Web com PHP                       V Ensol
      Gedvan Dias                                     22 de julho de 2011
Segurança e a linguagem PHP
●
    Grandes poderes trazem grandes
    responsabilidades
●
    Programadores inexperientes
●
    Autodidatismo é bom, mas...
       –   Aprendo apenas o que me interessa
       –   Questões importantes acabam ficando de lado

●
    Prazos apertados...


      Segurança em Aplicações Web com PHP                     V Ensol
      Gedvan Dias                                   22 de julho de 2011
Alguns casos recentes
●
    Site Mysql.com tem banco de dados
    comprometido [1]
          –   Ataque via SQL Injection
          –   Acesso a usuários, senhas, e-mails, etc.




[1] http://www.computerworld.com/s/article/9215249/MySQL_Web_site_falls_victim_to_SQL_injection_attack



        Segurança em Aplicações Web com PHP                                                     V Ensol
        Gedvan Dias                                                                   22 de julho de 2011
Alguns casos recentes
●
    Sony
     
         Sony Pictures[1]
     
         Sony Japan[2]
     
         Sony Greece[3]
     
         Sony Canada[4]


[1] http://www.bbc.co.uk/news/technology-13642145
[2] http://nakedsecurity.sophos.com/2011/05/24/sony-music-japan-hacked-through-sql-injection-flaw/
[3] http://nakedsecurity.sophos.com/2011/05/22/sony-bmg-greece-the-latest-hacked-sony-site/
[4] http://www.computerworld.com/s/article/9217028/Sony_says_hacker_stole_2_000_records_from_Canadian_site




         Segurança em Aplicações Web com PHP                                                           V Ensol
         Gedvan Dias                                                                        22 de julho de 2011
Alguns casos recentes
●
    Sites do Governo Brasileiro
       –   Vários órgãos públicos tiveram seu site atacado
       –   Portal Brasil, Presidência, Senado, Receita Federal, IBGE,
           entre outros
       –   Ataques de DoS, defacements e alguns roubos de dados




      Segurança em Aplicações Web com PHP                          V Ensol
      Gedvan Dias                                        22 de julho de 2011
Vamos ao que interessa
                  Show me the code!




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Configurações do PHP
●
    register_globals
    
        Variáveis globais são criadas automaticamente a
        partir de parâmetros GET, POST, cookies, sessões,
        etc.
    
        Desabilitado por padrão a partir do PHP 4.2
    
        Depracated no PHP 5.3




        Segurança em Aplicações Web com PHP               V Ensol
        Gedvan Dias                             22 de julho de 2011
Tratamento de erros
●
    Algumas configurações relacionadas a erros:
    
        error_reporting: nível de erro a ser reportado
         –   E_ALL ou E_ALL | E_STRICT
    
        display_errors: exibir ou não erros na tela
         –   Em produção, deve ser sempre desabilitado
    
        log_errors: fazer log dos erros em arquivo
    
        error_log: arquivo onde será feito log




        Segurança em Aplicações Web com PHP                        V Ensol
        Gedvan Dias                                      22 de julho de 2011
Manipulação de erros
●
    set_error_handler()
    
        Permite usar uma função própria para o
        tratamento dos erros
●
    set_exception_handler()
    
        Permite usar uma função para tratar exceções não
        capturadas




        Segurança em Aplicações Web com PHP                V Ensol
        Gedvan Dias                              22 de julho de 2011
set_error_handler()




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Recomendações
                e boas práticas




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Programação defensiva
●
    “Prevenir é melhor do que remediar”
●
    A internet não é um lugar amigável
●
    Um plano B pode salvar a sua vida (seu
    emprego, sua reputação, etc.)
●
    Pense sempre em minimizar os riscos




      Segurança em Aplicações Web com PHP              V Ensol
      Gedvan Dias                            22 de julho de 2011
KISS
●
    Keep It Simple, Stupid
●
    Evite a complexidade desnecessária
●
    Abra mão da “esperteza” em prol da segurança




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
KISS




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Regra de Ouro
     Toda entrada deve ser filtrada
   e toda saída deve ser “escapada”




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Filtro e Validação
●
    Você está recebendo o que está esperando
    receber?
●
    Trate todo o input da sua aplicação
       –   Dados de formulários
       –   Parâmetros da URL
       –   Informações de cookies
       –   Dados de sistemas externos

●
    Validação x Filtro (sanitizing)


      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
Validação x Filtro

              CPF      241.775.842-31

   filtro/sanitizing                      validação



   24177584231                        Erro! Formato inválido!




Segurança em Aplicações Web com PHP                             V Ensol
Gedvan Dias                                           22 de julho de 2011
API Data Filtering
●
    Funções para tratar o input usando vários tipos
    de filtro/validação
●
    Disponível a partir do PHP 5.2
●
    Pode substituir totalmente o acesso aos arrays
    superglobais
       –   $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV




      Segurança em Aplicações Web com PHP                   V Ensol
      Gedvan Dias                                 22 de julho de 2011
filter_input




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Escapando a Saída
●
    Regra de ouro: … toda saída deve ser
    “escapada”
       –   Pelo menos a toda a saída não confiável

●
    O que quer dizer “escapar”?
       –   Vem do inglês escape
       –   Nesse contexto, quer dizer que devemos converter
           determinados caracteres (ou sequências)

●
    Objetivo: manter a integridade da saída


      Segurança em Aplicações Web com PHP                      V Ensol
      Gedvan Dias                                    22 de julho de 2011
Escapando o HTML
●
    A saída mais comum do PHP é o HTML
●
    No HTML temos, basicamente:
    
        Tags (abertura, fechamento, atributos)
         –   Definem a estrutura do documento
    
        Conteúdo das tags (valores, texto)
●
    Escape no HTML significa, normalmente,
    impedir que hajam tags onde não deveria
    haver

        Segurança em Aplicações Web com PHP                V Ensol
        Gedvan Dias                              22 de julho de 2011
Escapando o HTML
●
    Funções: htmlespecialchars(), htmlentities()
●
    API Data Filtering: filter_input(), filter_var()




      Segurança em Aplicações Web com PHP               V Ensol
      Gedvan Dias                             22 de julho de 2011
Principais Tipos de Ataques e
      Vulnerabilidades



Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
SQL Injection
●
    Consiste em tentar inserir um trecho de código
    SQL em uma query que será enviada a um
    banco de dados




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
SQL Injection




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Exploits of a mom




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
SQL Injection
●
    SQL Injection é uma das vulnerabilidades mais
    comuns em aplicações PHP
       –   Felizmente, é muito fácil se proteger contra esse tipo de
           ataque

●
    Basta escapar os dados enviados nas queries
       –   Lembra da regra de ouro?
       –   Ao utilizar banco de dados, as queries são dados de
           saída (output) da aplicação
       –   Portanto, devem ser escapadas

      Segurança em Aplicações Web com PHP                         V Ensol
      Gedvan Dias                                       22 de julho de 2011
Escapando Valores de Queries
●
    Para escapar os valores enviados ao banco,
    pode-se usar as funções de cada extensão
       –   MySQL: mysql_real_escape_string()
       –   PostgreSQL: pg_escape_string()
       –   …
       –   Em último caso, pode-se usar a função addslashes()

●
    Interfaces OO e camadas de abstração
    geralmente têm um método equivalente
       –   PDO: quote()


      Segurança em Aplicações Web com PHP                        V Ensol
      Gedvan Dias                                      22 de julho de 2011
Bound Parameters
●
    As camadas de abstração, normalmente,
    também tem suporte a parâmetros bound
         –   O valores são vinculados através de marcadores
         –   A própria biblioteca faz o escape dos dados
    
        Oferecem uma ótima proteção contra SQL
        Injection




        Segurança em Aplicações Web com PHP                       V Ensol
        Gedvan Dias                                     22 de julho de 2011
Escape de Identificadores
●
    Normalmente, apenas os valores precisam ser
    escapados
●
    Em alguns casos, também é preciso escapar
    (ou filtrar) os identificadores
       –   Nomes de tabelas e campos
       –   Nos casos onde eles vêm de uma fonte externa

●
    No MySQL, os identificadores pode ser escritos
    entre crases.
       –   Ex: SELECT * FROM `tablename`

      Segurança em Aplicações Web com PHP                      V Ensol
      Gedvan Dias                                    22 de julho de 2011
XSS
                Cross-Site Scripting




Segurança em Aplicações Web com PHP              V Ensol
Gedvan Dias                            22 de julho de 2011
Cross-Site Scripting
●
    Também é um dos tipos mais comuns de
    ataques
●
    Toda aplicação que exibe dados recebidos
    (input) corre riscos
    
        Se esses dados não forem devidamente filtrados e
        escapados, a aplicação estará vulnerável




        Segurança em Aplicações Web com PHP              V Ensol
        Gedvan Dias                            22 de julho de 2011
Cross-Site Script
●
    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 redirecionar o usuário para outras
           páginas
       –   Código js para ler os cookies do usuário e enviá-los para
           outros sites
       –   Código js para alterar as informações do site
           (defacement)




      Segurança em Aplicações Web com PHP                          V Ensol
      Gedvan Dias                                        22 de julho de 2011
Cross-Site Scripting
●
    Para se proteger de XSS, basta fazer o que já
    foi dito
    
        Filtrar a entrada, e
    
        Escapar a saída
         –   htmlentities, htmlespecialchars, etc.




        Segurança em Aplicações Web com PHP                    V Ensol
        Gedvan Dias                                  22 de julho de 2011
Cross-Site Scripting




                      Demonstração




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
CSRF
          Cross-Site Request Forgery




Segurança em Aplicações Web com PHP              V Ensol
Gedvan Dias                            22 de julho de 2011
CSRF
●
    Como o nome diz, consiste em tentar forjar
    uma requisição de um site para outro
●
    O atacante usa a própria vítima para fazer a
    requisição, sem que ela tenha conhecimento
●
    Portanto, é muito difícil identificar se uma
    requisição é legítima ou um ataque CSRF



      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
CRSF



Uma linha de código vale mais que mil palavras

                        (demonstração)




  Segurança em Aplicações Web com PHP              V Ensol
  Gedvan Dias                            22 de julho de 2011
CSRF
●
    Então como se defender do CSRF?




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
GET x POST
●
    Antes de tudo
    
        Entenda a diferença entre GET e POST
    
        Funcionamento
    
        Objetivos
    
        Saiba quando usar cada um




        Segurança em Aplicações Web com PHP              V Ensol
        Gedvan Dias                            22 de julho de 2011
GET
●
    O método GET deve ser utilizado apenas para
    consultas
    
        Exibição de páginas
    
        Listagens
    
        Pesquisas
    
        Downloads, etc.




        Segurança em Aplicações Web com PHP             V Ensol
        Gedvan Dias                           22 de julho de 2011
POST
●
    O método POST deve ser utilizado para as
    operações
    
        Cadastros
    
        Atualização
    
        Exclusão
    
        Autenticação




        Segurança em Aplicações Web com PHP             V Ensol
        Gedvan Dias                           22 de julho de 2011
GET
●
    Não use o GET para realizar operações*
●
    Nada que vá modificar os seus dados
●
    Dessa forma, os ataques CSRF via GET não
    causarão nenhum dano




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
Operações via GET
●
    Às vezes, é necessário realizar operações via
    GET
       –   Ativação de usuário
       –   Reset de senha

●
    Normalmente, o usuário recebe o link por e-
    mail
●
    Nesses casos, o link deve conter um código
    gerado aleatoriamente
       –   De preferência, com data de expiração

      Segurança em Aplicações Web com PHP                    V Ensol
      Gedvan Dias                                  22 de julho de 2011
POST
●
    Entretanto, ainda estamos vulneráveis a
    ataques CSRF via POST
●
    Uma solução é utilizar tokens na sessão
    
        Os tokens são gerados de forma aleatória
    
        São armazenados na sessão e incluídos no
        formulário
    
        Ao receber a requisição, os tokens da sessão e do
        POST são comparados


        Segurança em Aplicações Web com PHP                V Ensol
        Gedvan Dias                              22 de julho de 2011
POST
●
    Outras técnicas ainda podem ser utilizadas
    para incrementar a segurança
    
        Incluir um tempo de expiração para os tokens
    
        Validar o cabeçalho HTTP_REFERER (embora não
        seja 100% confiável)




        Segurança em Aplicações Web com PHP             V Ensol
        Gedvan Dias                           22 de julho de 2011
Request Spoofing




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Request Spoofing
●
    Request Spoofing é a tentativa de manipular
    requisições de alguma forma
●
    A forma mais simples é alterar manualmente
    os parâmetros em uma URL
●
    Também é possível alterar os elementos de um
    formulário
       –   Modificar atributos (maxlength, disabled, readonly,
           name, value)
       –   Inserir ou remover elementos

      Segurança em Aplicações Web com PHP                         V Ensol
      Gedvan Dias                                       22 de julho de 2011
Request Spoofing
●
    Para alterar um formulário, basta simplesmente
    salvar a página no seu computador e editá-la
●
    Ou utilizar ferramentas como o Firebug, que
    permite editar todo o HTML
●
    Outras ferramentas permitem até executar
    códigos javascript de terceiros
●
    Observação
       –   A saída que você gera na aplicação (HTML + CSS +
           Javascript) não é mais sua, é do cliente

      Segurança em Aplicações Web com PHP                         V Ensol
      Gedvan Dias                                       22 de julho de 2011
Request Spoofing
●
    Com um pouco mais de conhecimento, é
    possível criar requisições HTTP completas
       –   Pode ser feito na linha de comando, com o comando
           telnet, por exemplo
       –   Pode-se criar um script em qualquer linguagem que se
           conecta ao socket do servidor web
       –   Existem várias outras formas

●
    O HTTP é um padrão aberto e sua aplicação
    deve estar pronta para isso

      Segurança em Aplicações Web com PHP                       V Ensol
      Gedvan Dias                                     22 de julho de 2011
Request Spoofing
●
    Como se proteger nessa situação?


    Filtrar a entrada …
    … e escapar a saída




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
Arquivos




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Exposição de Código
●
    Deve-se evitar arquivos PHP com extensão
    diferente de .php (ex: .inc)
    
        Ou deve-se ter certeza que estão fora da raiz web
    
        Ou que o Apache está configurado corretamente
        para executá-los e não exibi-los




        Segurança em Aplicações Web com PHP               V Ensol
        Gedvan Dias                             22 de julho de 2011
Inclusão de Arquivos
●
    Inclusão arquivos errados: index.php?usuario=../../admin
●
    Code injection: POST path=http://meusite.com




       Segurança em Aplicações Web com PHP                     V Ensol
       Gedvan Dias                                   22 de julho de 2011
Command Injection
●
    Se a sua aplicação executa comandos do shell,
    também é preciso escapá-los
●
    Funções
    
        escapeshellcmd
    
        escapeshellarg




        Segurança em Aplicações Web com PHP             V Ensol
        Gedvan Dias                           22 de julho de 2011
Autenticação e Autorização




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Autenticação
●
    É o processo de identificar um usuário
●
    Ou seja, verificar se a pessoa que está
    acessando corresponde ao seu usuário
●
    Dependendo de sua aplicação, considere o uso
    do protocolo HTTPS para a autenticação




      Segurança em Aplicações Web com PHP               V Ensol
      Gedvan Dias                             22 de julho de 2011
Autorização
●
    Também é chamado de controle de acesso
●
    Consiste em determinar se o usuário está
    autorizado a acessar um determinado recurso
       –   Página, operação, consulta, etc.

●
    Normalmente, as informações de autorização
    ficam na sessão
●
    Para processos críticos, considere fazer uma
    nova autenticação

      Segurança em Aplicações Web com PHP               V Ensol
      Gedvan Dias                             22 de julho de 2011
Finalizando...




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Dicas finais
●
    Crie o hábito de programar de forma segura
●
    Em uma equipe, todos os programadores
    devem ter os conceitos básicos em mente
●
    Estabeleça uma política de segurança
    previamente
●
    Esteja atualizado



      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
OWASP
●
    The Open Web Application Secutiry Project
         –   Padrões relacionados a segurança
         –   Levantamento sobre vulnerabilidades e ataque
         –   Tecnologias e ferramentas
         –   Notícias, etc.

●
    Projeto apoiado por grandes empresas e
    universidades
    
        Amazon, IBM, Mozilla, Oracle, etc.


        Segurança em Aplicações Web com PHP                      V Ensol
        Gedvan Dias                                    22 de julho de 2011
Livros




Segurança em Aplicações Web com PHP             V Ensol
Gedvan Dias                           22 de julho de 2011
Links
●
    OWASP: www.owasp.org
●
    Manual do PHP:
    http://php.net/manual/en/security.php
●
    PHP Security Consortium: http://phpsec.org/




      Segurança em Aplicações Web com PHP             V Ensol
      Gedvan Dias                           22 de julho de 2011
Obrigado!
              gedvan@gmail.com - @gedvan




Segurança em Aplicações Web com PHP                  V Ensol
Gedvan Dias                                22 de julho de 2011

Weitere ähnliche Inhalte

Was ist angesagt?

Abertura de Curso - SENAC.pptx
Abertura de Curso - SENAC.pptxAbertura de Curso - SENAC.pptx
Abertura de Curso - SENAC.pptxRAFAEL COSTA
 
Aula 4 lplf - curriculos
Aula 4   lplf - curriculos Aula 4   lplf - curriculos
Aula 4 lplf - curriculos profNICODEMOS
 
Gerenciamento De Qualidade Do Projeto
Gerenciamento De Qualidade Do ProjetoGerenciamento De Qualidade Do Projeto
Gerenciamento De Qualidade Do ProjetoMarco Rosner
 
Entrevista 01
Entrevista 01Entrevista 01
Entrevista 01412365
 
Entrevista de emprego
Entrevista de emprego Entrevista de emprego
Entrevista de emprego thamiresantana
 
Exercício gestão da qualidade pdca
Exercício gestão da qualidade   pdcaExercício gestão da qualidade   pdca
Exercício gestão da qualidade pdcaJoice Fuzari
 
Cartilha de Integração de Novo Funcionário Equipa Informática
Cartilha de Integração de Novo Funcionário Equipa InformáticaCartilha de Integração de Novo Funcionário Equipa Informática
Cartilha de Integração de Novo Funcionário Equipa Informáticaequipainfo
 
Gerenciamento de Projetos PMBOK cap9 rh
Gerenciamento de Projetos PMBOK cap9 rhGerenciamento de Projetos PMBOK cap9 rh
Gerenciamento de Projetos PMBOK cap9 rhFernando Palma
 
Arh 5. planejamento de rh
Arh   5. planejamento de rhArh   5. planejamento de rh
Arh 5. planejamento de rhBernardoLima1
 
caderno-de-exercicio-departamento-pessoal
caderno-de-exercicio-departamento-pessoalcaderno-de-exercicio-departamento-pessoal
caderno-de-exercicio-departamento-pessoalFabiana Arthur
 
Termo de abertura do projeto - beauty
Termo de abertura do projeto - beautyTermo de abertura do projeto - beauty
Termo de abertura do projeto - beautyMLGV
 
Física básica radiologia convencional
Física básica radiologia convencionalFísica básica radiologia convencional
Física básica radiologia convencionalMurilo Cavalcanti
 

Was ist angesagt? (20)

Abertura de Curso - SENAC.pptx
Abertura de Curso - SENAC.pptxAbertura de Curso - SENAC.pptx
Abertura de Curso - SENAC.pptx
 
Aula 4 lplf - curriculos
Aula 4   lplf - curriculos Aula 4   lplf - curriculos
Aula 4 lplf - curriculos
 
PDCA - OPERAÇÃO
PDCA - OPERAÇÃOPDCA - OPERAÇÃO
PDCA - OPERAÇÃO
 
Gerenciamento De Qualidade Do Projeto
Gerenciamento De Qualidade Do ProjetoGerenciamento De Qualidade Do Projeto
Gerenciamento De Qualidade Do Projeto
 
Entrevista 01
Entrevista 01Entrevista 01
Entrevista 01
 
2a lista de exercicios n1
2a lista de exercicios n12a lista de exercicios n1
2a lista de exercicios n1
 
Avaliacao cha
Avaliacao   chaAvaliacao   cha
Avaliacao cha
 
Arranjos Físico
 Arranjos Físico Arranjos Físico
Arranjos Físico
 
Entrevista de emprego
Entrevista de emprego Entrevista de emprego
Entrevista de emprego
 
5W1H
5W1H5W1H
5W1H
 
Braquiterapia
BraquiterapiaBraquiterapia
Braquiterapia
 
Exercício gestão da qualidade pdca
Exercício gestão da qualidade   pdcaExercício gestão da qualidade   pdca
Exercício gestão da qualidade pdca
 
Cartilha de Integração de Novo Funcionário Equipa Informática
Cartilha de Integração de Novo Funcionário Equipa InformáticaCartilha de Integração de Novo Funcionário Equipa Informática
Cartilha de Integração de Novo Funcionário Equipa Informática
 
Aula 5 cliente interno
Aula 5   cliente internoAula 5   cliente interno
Aula 5 cliente interno
 
Gerenciamento de Projetos PMBOK cap9 rh
Gerenciamento de Projetos PMBOK cap9 rhGerenciamento de Projetos PMBOK cap9 rh
Gerenciamento de Projetos PMBOK cap9 rh
 
Arh 5. planejamento de rh
Arh   5. planejamento de rhArh   5. planejamento de rh
Arh 5. planejamento de rh
 
Curso de TBO
Curso de TBOCurso de TBO
Curso de TBO
 
caderno-de-exercicio-departamento-pessoal
caderno-de-exercicio-departamento-pessoalcaderno-de-exercicio-departamento-pessoal
caderno-de-exercicio-departamento-pessoal
 
Termo de abertura do projeto - beauty
Termo de abertura do projeto - beautyTermo de abertura do projeto - beauty
Termo de abertura do projeto - beauty
 
Física básica radiologia convencional
Física básica radiologia convencionalFísica básica radiologia convencional
Física básica radiologia convencional
 

Andere mochten auch

PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
Como instalar o XAMPP no Micro
Como instalar o XAMPP no MicroComo instalar o XAMPP no Micro
Como instalar o XAMPP no MicroMarcio Okabe
 
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaJoomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaTchelinux
 
Criando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpCriando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpJackson Meires
 
Como instalar servidor web xampp
Como instalar servidor web xamppComo instalar servidor web xampp
Como instalar servidor web xampparnaldo vasquez
 
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Daniel Corrêa
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xamppZe'eduardo Silva
 
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...jCursos
 
Gestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresGestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresHenriqueta Sofia Djalo
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapMayron Cachina
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 

Andere mochten auch (20)

Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
Como instalar o XAMPP no Micro
Como instalar o XAMPP no MicroComo instalar o XAMPP no Micro
Como instalar o XAMPP no Micro
 
Joomla! CMS
Joomla! CMSJoomla! CMS
Joomla! CMS
 
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina MadrugaJoomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
Joomla! para iniciantes - Djonatan Buss, Jerônimo Medina Madruga
 
Criando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla phpCriando Sites Dinamicos com Joomla php
Criando Sites Dinamicos com Joomla php
 
Como instalar servidor web xampp
Como instalar servidor web xamppComo instalar servidor web xampp
Como instalar servidor web xampp
 
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
Gestão de Conteúdo Web: Guia Básico Utilizando o Joomla!
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xampp
 
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
Criação de sites Joomla com CCKs e frameworks de template - Joomla Day Ribeir...
 
Gestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidoresGestão de conteúdos com aplicações instaladas em servidores
Gestão de conteúdos com aplicações instaladas em servidores
 
Como Instalar o Joomla no micro
Como Instalar o Joomla no microComo Instalar o Joomla no micro
Como Instalar o Joomla no micro
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Xampp
XamppXampp
Xampp
 

Ähnlich wie Segurança em Aplicações Web com PHP

Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Rodrigo Wanderley de Melo Cardoso
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Alex Piaz
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Rodrigo Wanderley de Melo Cardoso
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi... Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...Alexandro Silva
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasProteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasSegInfo
 
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011Luís Cobucci
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
Primeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidPrimeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidMessias Batista
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Javaarmeniocardoso
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapThiago Colares
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPesteVitor Mattos
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!tdc-globalcode
 

Ähnlich wie Segurança em Aplicações Web com PHP (20)

Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
Ecossistema PHP - O presente, o passado e o futuro da linguagem back-end mais...
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço Direito
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
Ecossistema php: O presente, o passado e o futuro da linguagem (back-end) mai...
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi... Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasProteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
 
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
Primeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor androidPrimeiros passos para o novo desenvolvedor android
Primeiros passos para o novo desenvolvedor android
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Java
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Xdebug seus problemas acabaram - TDC - PHPeste
Xdebug   seus problemas acabaram - TDC - PHPesteXdebug   seus problemas acabaram - TDC - PHPeste
Xdebug seus problemas acabaram - TDC - PHPeste
 
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
TDC2016 | Trilha PHP - Xdebug: Seus problemas acabaram!
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

Segurança em Aplicações Web com PHP

  • 1. Segurança em Aplicações Web com PHP Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 2. Sobre mim ● Mestre em Informática pela UFPB ● Professor substituto no IFPB – C, PHP, Comércio Eletrônico ● Professor na Faculdade IDEZ – HTML/CSS/PHP ● Lexa Sistemas – www.lexasistemas.com.br – Criação de sites em Drupal ● Letz – www.letz.com.br – Rede social para divulgação de eventos Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 3. Esta palestra é sobre ● Segurança em aplicações web – Boas práticas de programação – Erros comuns – Detalhes do PHP – Tipos de ataques a sites – Autenticação e autorização – Foco na implementação com PHP ● Pode ser aplicado para outras linguagens Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 4. Esta palestra não é sobre ● Segurança de servidores – Configuração de servidores – Firewalls – DNS, FTP, SSH, HTTPS, … – DoS, IP spoofing, phising, … – Spam Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 5. Segurança e a linguagem PHP ● Por que PHP? ● PHP surgiu de forma despretensiosa ● Acabou se tornando a linguagem server-side mais utilizada na web – Facilidade, rapidez, versatilidade, etc. Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 6. Segurança e a linguagem PHP ● Grandes poderes trazem grandes responsabilidades ● Programadores inexperientes ● Autodidatismo é bom, mas... – Aprendo apenas o que me interessa – Questões importantes acabam ficando de lado ● Prazos apertados... Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 7. Alguns casos recentes ● Site Mysql.com tem banco de dados comprometido [1] – Ataque via SQL Injection – Acesso a usuários, senhas, e-mails, etc. [1] http://www.computerworld.com/s/article/9215249/MySQL_Web_site_falls_victim_to_SQL_injection_attack Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 8. Alguns casos recentes ● Sony  Sony Pictures[1]  Sony Japan[2]  Sony Greece[3]  Sony Canada[4] [1] http://www.bbc.co.uk/news/technology-13642145 [2] http://nakedsecurity.sophos.com/2011/05/24/sony-music-japan-hacked-through-sql-injection-flaw/ [3] http://nakedsecurity.sophos.com/2011/05/22/sony-bmg-greece-the-latest-hacked-sony-site/ [4] http://www.computerworld.com/s/article/9217028/Sony_says_hacker_stole_2_000_records_from_Canadian_site Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 9. Alguns casos recentes ● Sites do Governo Brasileiro – Vários órgãos públicos tiveram seu site atacado – Portal Brasil, Presidência, Senado, Receita Federal, IBGE, entre outros – Ataques de DoS, defacements e alguns roubos de dados Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 10. Vamos ao que interessa Show me the code! Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 11. Configurações do PHP ● register_globals  Variáveis globais são criadas automaticamente a partir de parâmetros GET, POST, cookies, sessões, etc.  Desabilitado por padrão a partir do PHP 4.2  Depracated no PHP 5.3 Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 12. Tratamento de erros ● Algumas configurações relacionadas a erros:  error_reporting: nível de erro a ser reportado – E_ALL ou E_ALL | E_STRICT  display_errors: exibir ou não erros na tela – Em produção, deve ser sempre desabilitado  log_errors: fazer log dos erros em arquivo  error_log: arquivo onde será feito log Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 13. Manipulação de erros ● set_error_handler()  Permite usar uma função própria para o tratamento dos erros ● set_exception_handler()  Permite usar uma função para tratar exceções não capturadas Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 14. set_error_handler() Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 15. Recomendações e boas práticas Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 16. Programação defensiva ● “Prevenir é melhor do que remediar” ● A internet não é um lugar amigável ● Um plano B pode salvar a sua vida (seu emprego, sua reputação, etc.) ● Pense sempre em minimizar os riscos Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 17. KISS ● Keep It Simple, Stupid ● Evite a complexidade desnecessária ● Abra mão da “esperteza” em prol da segurança Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 18. KISS Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 19. Regra de Ouro Toda entrada deve ser filtrada e toda saída deve ser “escapada” Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 20. Filtro e Validação ● Você está recebendo o que está esperando receber? ● Trate todo o input da sua aplicação – Dados de formulários – Parâmetros da URL – Informações de cookies – Dados de sistemas externos ● Validação x Filtro (sanitizing) Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 21. Validação x Filtro CPF 241.775.842-31 filtro/sanitizing validação 24177584231 Erro! Formato inválido! Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 22. API Data Filtering ● Funções para tratar o input usando vários tipos de filtro/validação ● Disponível a partir do PHP 5.2 ● Pode substituir totalmente o acesso aos arrays superglobais – $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 23. filter_input Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 24. Escapando a Saída ● Regra de ouro: … toda saída deve ser “escapada” – Pelo menos a toda a saída não confiável ● O que quer dizer “escapar”? – Vem do inglês escape – Nesse contexto, quer dizer que devemos converter determinados caracteres (ou sequências) ● Objetivo: manter a integridade da saída Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 25. Escapando o HTML ● A saída mais comum do PHP é o HTML ● No HTML temos, basicamente:  Tags (abertura, fechamento, atributos) – Definem a estrutura do documento  Conteúdo das tags (valores, texto) ● Escape no HTML significa, normalmente, impedir que hajam tags onde não deveria haver Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 26. Escapando o HTML ● Funções: htmlespecialchars(), htmlentities() ● API Data Filtering: filter_input(), filter_var() Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 27. Principais Tipos de Ataques e Vulnerabilidades Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 28. SQL Injection ● Consiste em tentar inserir um trecho de código SQL em uma query que será enviada a um banco de dados Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 29. SQL Injection Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 30. Exploits of a mom Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 31. SQL Injection ● SQL Injection é uma das vulnerabilidades mais comuns em aplicações PHP – Felizmente, é muito fácil se proteger contra esse tipo de ataque ● Basta escapar os dados enviados nas queries – Lembra da regra de ouro? – Ao utilizar banco de dados, as queries são dados de saída (output) da aplicação – Portanto, devem ser escapadas Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 32. Escapando Valores de Queries ● Para escapar os valores enviados ao banco, pode-se usar as funções de cada extensão – MySQL: mysql_real_escape_string() – PostgreSQL: pg_escape_string() – … – Em último caso, pode-se usar a função addslashes() ● Interfaces OO e camadas de abstração geralmente têm um método equivalente – PDO: quote() Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 33. Bound Parameters ● As camadas de abstração, normalmente, também tem suporte a parâmetros bound – O valores são vinculados através de marcadores – A própria biblioteca faz o escape dos dados  Oferecem uma ótima proteção contra SQL Injection Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 34. Escape de Identificadores ● Normalmente, apenas os valores precisam ser escapados ● Em alguns casos, também é preciso escapar (ou filtrar) os identificadores – Nomes de tabelas e campos – Nos casos onde eles vêm de uma fonte externa ● No MySQL, os identificadores pode ser escritos entre crases. – Ex: SELECT * FROM `tablename` Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 35. XSS Cross-Site Scripting Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 36. Cross-Site Scripting ● Também é um dos tipos mais comuns de ataques ● Toda aplicação que exibe dados recebidos (input) corre riscos  Se esses dados não forem devidamente filtrados e escapados, a aplicação estará vulnerável Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 37. Cross-Site Script ● 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 redirecionar o usuário para outras páginas – Código js para ler os cookies do usuário e enviá-los para outros sites – Código js para alterar as informações do site (defacement) Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 38. Cross-Site Scripting ● Para se proteger de XSS, basta fazer o que já foi dito  Filtrar a entrada, e  Escapar a saída – htmlentities, htmlespecialchars, etc. Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 39. Cross-Site Scripting Demonstração Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 40. CSRF Cross-Site Request Forgery Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 41. CSRF ● Como o nome diz, consiste em tentar forjar uma requisição de um site para outro ● O atacante usa a própria vítima para fazer a requisição, sem que ela tenha conhecimento ● Portanto, é muito difícil identificar se uma requisição é legítima ou um ataque CSRF Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 42. CRSF Uma linha de código vale mais que mil palavras (demonstração) Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 43. CSRF ● Então como se defender do CSRF? Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 44. GET x POST ● Antes de tudo  Entenda a diferença entre GET e POST  Funcionamento  Objetivos  Saiba quando usar cada um Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 45. GET ● O método GET deve ser utilizado apenas para consultas  Exibição de páginas  Listagens  Pesquisas  Downloads, etc. Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 46. POST ● O método POST deve ser utilizado para as operações  Cadastros  Atualização  Exclusão  Autenticação Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 47. GET ● Não use o GET para realizar operações* ● Nada que vá modificar os seus dados ● Dessa forma, os ataques CSRF via GET não causarão nenhum dano Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 48. Operações via GET ● Às vezes, é necessário realizar operações via GET – Ativação de usuário – Reset de senha ● Normalmente, o usuário recebe o link por e- mail ● Nesses casos, o link deve conter um código gerado aleatoriamente – De preferência, com data de expiração Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 49. POST ● Entretanto, ainda estamos vulneráveis a ataques CSRF via POST ● Uma solução é utilizar tokens na sessão  Os tokens são gerados de forma aleatória  São armazenados na sessão e incluídos no formulário  Ao receber a requisição, os tokens da sessão e do POST são comparados Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 50. POST ● Outras técnicas ainda podem ser utilizadas para incrementar a segurança  Incluir um tempo de expiração para os tokens  Validar o cabeçalho HTTP_REFERER (embora não seja 100% confiável) Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 51. Request Spoofing Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 52. Request Spoofing ● Request Spoofing é a tentativa de manipular requisições de alguma forma ● A forma mais simples é alterar manualmente os parâmetros em uma URL ● Também é possível alterar os elementos de um formulário – Modificar atributos (maxlength, disabled, readonly, name, value) – Inserir ou remover elementos Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 53. Request Spoofing ● Para alterar um formulário, basta simplesmente salvar a página no seu computador e editá-la ● Ou utilizar ferramentas como o Firebug, que permite editar todo o HTML ● Outras ferramentas permitem até executar códigos javascript de terceiros ● Observação – A saída que você gera na aplicação (HTML + CSS + Javascript) não é mais sua, é do cliente Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 54. Request Spoofing ● Com um pouco mais de conhecimento, é possível criar requisições HTTP completas – Pode ser feito na linha de comando, com o comando telnet, por exemplo – Pode-se criar um script em qualquer linguagem que se conecta ao socket do servidor web – Existem várias outras formas ● O HTTP é um padrão aberto e sua aplicação deve estar pronta para isso Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 55. Request Spoofing ● Como se proteger nessa situação? Filtrar a entrada … … e escapar a saída Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 56. Arquivos Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 57. Exposição de Código ● Deve-se evitar arquivos PHP com extensão diferente de .php (ex: .inc)  Ou deve-se ter certeza que estão fora da raiz web  Ou que o Apache está configurado corretamente para executá-los e não exibi-los Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 58. Inclusão de Arquivos ● Inclusão arquivos errados: index.php?usuario=../../admin ● Code injection: POST path=http://meusite.com Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 59. Command Injection ● Se a sua aplicação executa comandos do shell, também é preciso escapá-los ● Funções  escapeshellcmd  escapeshellarg Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 60. Autenticação e Autorização Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 61. Autenticação ● É o processo de identificar um usuário ● Ou seja, verificar se a pessoa que está acessando corresponde ao seu usuário ● Dependendo de sua aplicação, considere o uso do protocolo HTTPS para a autenticação Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 62. Autorização ● Também é chamado de controle de acesso ● Consiste em determinar se o usuário está autorizado a acessar um determinado recurso – Página, operação, consulta, etc. ● Normalmente, as informações de autorização ficam na sessão ● Para processos críticos, considere fazer uma nova autenticação Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 63. Finalizando... Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 64. Dicas finais ● Crie o hábito de programar de forma segura ● Em uma equipe, todos os programadores devem ter os conceitos básicos em mente ● Estabeleça uma política de segurança previamente ● Esteja atualizado Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 65. OWASP ● The Open Web Application Secutiry Project – Padrões relacionados a segurança – Levantamento sobre vulnerabilidades e ataque – Tecnologias e ferramentas – Notícias, etc. ● Projeto apoiado por grandes empresas e universidades  Amazon, IBM, Mozilla, Oracle, etc. Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 66. Livros Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 67. Links ● OWASP: www.owasp.org ● Manual do PHP: http://php.net/manual/en/security.php ● PHP Security Consortium: http://phpsec.org/ Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011
  • 68. Obrigado! gedvan@gmail.com - @gedvan Segurança em Aplicações Web com PHP V Ensol Gedvan Dias 22 de julho de 2011