SlideShare ist ein Scribd-Unternehmen logo
1 von 32
SEGURANÇA PHP


                Samyr Abdo
XSS
XSS
   XSS(Cross Site Scripting) é uma técnica utilizada
    para roubar sessões (cookies) em uma aplicação
    web.

   Como funciona?

   Injeção de tags html e comandos javascript em
    alguma função de um sistema.
XSS
   Como atacar?

   Simulando o ataque:

    http://localhost/seguranca/xss.php?temp=<script>alert(doc
                        ument.cookie)</script>
XSS
   Como se proteger?

 htmlspecialchars()
 htmlentities()
       Converte caracteres especiais para a realidade HTML
SESSIONS
SESSIONS
   Como funciona?

   Principais ataques:
     Session fixation
     Session hijacking.
SESSIONS - SESSION FIXATION
   Como atacar?

   <a href="http://www.dominio-
    exemplo.com?PHPSESSID=987654321">Acessar<
    /a>
SESSIONS - SESSION FIXATION
 Simulando o ataque:
<?php
     session_start();

     if (!array_key_exists('visitas', $_SESSION))
         $_SESSION['visitas'] = 1;
     else
         $_SESSION['visitas']++;

     echo $_SESSION['visitas'];
?>
SESSIONS - SESSION FIXATION
   Testando a vulnerabilidade
       url + ?PHPSESSID=654321
SESSIONS - SESSION FIXATION
   Como se proteger?
       Basta gerar novamente o identificador de sessão toda
        vez que o usuário autenticar.Ex.:

    <?php
    if (usuario_autenticado())
    {
         session_regenerate_id();
    }
    ?>
SESSIONS - SESSSION HIJACKING
   Ataque mais difícil de se proteger, porém mais
    difícil de ser explorado.

   Devido ao identificador da sessão estar gravado
    em um cookie no navegador, o usuário malicioso
    pode explorar alguma vulnerabilidade do browser
    ou obter os cookies do navegador através de um
    ataque chamado XSS.
SESSIONS - SESSSION HIJACKING
   Como se proteger?
     Chegar algum dos headers da aplicação.
     Criptografia md5
SESSIONS - SESSSION HIJACKING
   Header “HTTP_USER_AGENT”
       Exemplo do Header no Mozilla:
          Mozilla/5.0 (Windows NT 6.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1


       Exemplo do Header no Chrome:
          Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko)
        Chrome/16.0.912.77 Safari/535.7
SESSIONS - SESSSION HIJACKING
 Ex:
 <?php

 session_start();

 if (array_key_exists('HTTP_USER_AGENT', $_SESSION))
 {
     if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
     {
       /* Acesso inválido. O header User-Agent mudou
        durante a mesma sessão. */
       exit;
     }
 }
 else
 {
   /* Primeiro acesso do usuário, vamos gravar na sessão um
    hash md5 do header User-Agent */
     $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
 }
 ?>
INCLUDE X REQUIRE
INCLUDE X REQUIRE

    Include(): Tenta incluir uma página. Em caso de erro, o
     script retorna um warning (aviso) e prossegue com a
     execução do script.

    Require(): Tenta incluir uma página. Em caso de erro, o
     script retorna um fatal error e aborta a execução do
     script.
INCLUDE X REQUIRE

    Como atacar?
     RFI (Remote File Inclusion) e LFI (Local File Inclusion)
     Ex:
     Endereço: index.php?url=[Parâmetro]

     <?php

     if (isset($_GET['url']))
     {
         $pg = $_GET['url'];
          include($pg);
      }

     ?>
INCLUDE X REQUIRE

    Como se proteger?
       RFI (Remote File Inclusion) – uso de expressões regulares
     Endereço: index.php?url=[Parâmetro]
     <?php
     if (isset($_GET['url']))
     {
         $pg = $_GET['url'];
         $testa = '/([http])([:]{1})/';
           if (preg_match($testa,$pg) != TRUE)
                  include($pg);
           else
           echo „ERRADO‟;
      }
     ?>
INCLUDE X REQUIRE

    Como se proteger?
        LFI (Local File Inclusion) – configuração do php.ini

        allow_url_fopen = Off
         permite abrir ou processar uma página ou arquivo externo
         dentro do script php.
PHP.INI
PHP.INI
   expose_php = off
    Permite reduzir a quantidade de informações disponíveis
      para o invasor.
PHP.INI – OCULTANDO ERROS
   error_reporting = E_ALL
    display_errors = Off

    Para que não seja exibido qualquer erro, aviso ou
    notice no site ou aplicativo.
PHP.INI – OCULTANDO ERROS
Ex:

 Ocorreu um erro no banco de dados
 Error Number: 1054

 Unknown column 'ordem' in 'order clause'

 SELECT `compra_contrata`.* FROM `compra_contrata`
 WHERE `status` = 1 AND `data_final` >= '2012-01-30'
 ORDER BY `ordem`
INICIALIZAÇÃO DE VARIÁVEIS
INICIALIZAÇÃO DE VARIÁVEIS
   Como atacar?

    <?php

         if (authenticated_user())
         {
                 $authorized = true;
         }

    ?>

   auth.php?authorized=1
INICIALIZAÇÃO DE VARIÁVEIS
   Como se proteger ?
    <?php

         $authorized = false;

         if (authenticated_user())
           {
                   $authorized = true;
           }

    ?>
SQL INJECTION
SQL INJECTION
   Como atacar?

   "SELECT * FROM usuarios WHERE usuario=
    „{$usuario}‟ AND senha = „{ $senha }‟"
SQL INJECTION
   Como atacar?




    ‘or 1=‘1

   SELECT * FROM usuarios WHERE usuario = „ „
    AND senha = „ ‟ OR 1=„1‟
SQL INJECTION
   Como se proteger?

   addslashes()/stripslashes():
      insere o caracter de escape antes de aspas simples ou
      duplas, antes da barra invertida e antes do caracter
      NULL.


   mysql_real_escape_string():
      Escapa os caracteres especiais numa string para usar
      em um comando SQL
Segurança PHP - por Samyr Abdo

Weitere ähnliche Inhalte

Was ist angesagt?

Segurança no desenvolvimento web
Segurança no desenvolvimento webSegurança no desenvolvimento web
Segurança no desenvolvimento webRafael Monteiro
 
Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4William Costa
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasRafael Jaques
 
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
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaCarlos Santos
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
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
 
Segurança em Aplicações ASP.NET (XSS e CSRF)
Segurança em Aplicações ASP.NET (XSS e CSRF)Segurança em Aplicações ASP.NET (XSS e CSRF)
Segurança em Aplicações ASP.NET (XSS e CSRF)Luciano Gerhardt
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software SeguroAugusto Lüdtke
 
Vale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasMagno Logan
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 

Was ist angesagt? (19)

Segurança no desenvolvimento web
Segurança no desenvolvimento webSegurança no desenvolvimento web
Segurança no desenvolvimento web
 
Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4
 
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
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de Balas
 
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
 
Palestra sql injection oficial
Palestra sql injection oficialPalestra sql injection oficial
Palestra sql injection oficial
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
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
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Segurança em Aplicações ASP.NET (XSS e CSRF)
Segurança em Aplicações ASP.NET (XSS e CSRF)Segurança em Aplicações ASP.NET (XSS e CSRF)
Segurança em Aplicações ASP.NET (XSS e CSRF)
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 
Vale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago Bordini
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 

Andere mochten auch

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
 
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
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraClavis Segurança da Informação
 
Big Data e Segurança da Informação - 10o Workshop SegInfo - Apresentação
Big Data e Segurança da Informação - 10o Workshop SegInfo - ApresentaçãoBig Data e Segurança da Informação - 10o Workshop SegInfo - Apresentação
Big Data e Segurança da Informação - 10o Workshop SegInfo - ApresentaçãoClavis Segurança da Informação
 
Segurança da informação na web
Segurança da informação na webSegurança da informação na web
Segurança da informação na webRafael Marinho
 
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - ApresentaçãoDesenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - ApresentaçãoClavis Segurança da Informação
 
Experiência e Cases com Auditorias Teste de Invasão em Redes e Sistemas
Experiência e Cases com Auditorias Teste de Invasão em Redes e SistemasExperiência e Cases com Auditorias Teste de Invasão em Redes e Sistemas
Experiência e Cases com Auditorias Teste de Invasão em Redes e SistemasClavis Segurança da Informação
 
Apostila completa-de-php5-mysql-e-ajax
Apostila completa-de-php5-mysql-e-ajaxApostila completa-de-php5-mysql-e-ajax
Apostila completa-de-php5-mysql-e-ajaxhkm4e
 
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKAnalisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKSegInfo
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de softwareJuliano Padilha
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
Apostila PHP5 + MySQL + AJAX
Apostila PHP5 + MySQL + AJAXApostila PHP5 + MySQL + AJAX
Apostila PHP5 + MySQL + AJAXDaniel Brandão
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPCarlos Serrao
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zeroFred Ramos
 

Andere mochten auch (14)

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!
 
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
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
 
Big Data e Segurança da Informação - 10o Workshop SegInfo - Apresentação
Big Data e Segurança da Informação - 10o Workshop SegInfo - ApresentaçãoBig Data e Segurança da Informação - 10o Workshop SegInfo - Apresentação
Big Data e Segurança da Informação - 10o Workshop SegInfo - Apresentação
 
Segurança da informação na web
Segurança da informação na webSegurança da informação na web
Segurança da informação na web
 
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - ApresentaçãoDesenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
 
Experiência e Cases com Auditorias Teste de Invasão em Redes e Sistemas
Experiência e Cases com Auditorias Teste de Invasão em Redes e SistemasExperiência e Cases com Auditorias Teste de Invasão em Redes e Sistemas
Experiência e Cases com Auditorias Teste de Invasão em Redes e Sistemas
 
Apostila completa-de-php5-mysql-e-ajax
Apostila completa-de-php5-mysql-e-ajaxApostila completa-de-php5-mysql-e-ajax
Apostila completa-de-php5-mysql-e-ajax
 
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELKAnalisando eventos de forma inteligente para detecção de intrusos usando ELK
Analisando eventos de forma inteligente para detecção de intrusos usando ELK
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de software
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Apostila PHP5 + MySQL + AJAX
Apostila PHP5 + MySQL + AJAXApostila PHP5 + MySQL + AJAX
Apostila PHP5 + MySQL + AJAX
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHP
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 

Ähnlich wie Segurança PHP - por Samyr Abdo

Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBErick Belluci Tedeschi
 
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29cadiego
 
ataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdfataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdfxererenhosdominaram
 
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 SentinelasAlexandro Silva
 
Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael JaquesConstruindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael JaquesTchelinux
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...iMasters
 
Quem tem medo do XSS
Quem tem medo do XSSQuem tem medo do XSS
Quem tem medo do XSSWilliam Costa
 
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
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on RailsJulio Monteiro
 
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Alcyon Ferreira de Souza Junior, MSc
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroFlávio Lisboa
 
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
Blind SQL InjectionAmeaça Oculta - do Ataque a DefesaBlind SQL InjectionAmeaça Oculta - do Ataque a Defesa
Blind SQL Injection Ameaça Oculta - do Ataque a DefesaFlavio Shiga
 
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
Blind SQL InjectionAmeaça Oculta - do Ataque a DefesaBlind SQL InjectionAmeaça Oculta - do Ataque a Defesa
Blind SQL Injection Ameaça Oculta - do Ataque a DefesaFlavio Shiga
 

Ähnlich wie Segurança PHP - por Samyr Abdo (19)

Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Web app flaws
Web app flawsWeb app flaws
Web app flaws
 
Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
 
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
 
ataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdfataque_bruteforce_com_hydra_parte_1.pdf
ataque_bruteforce_com_hydra_parte_1.pdf
 
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
 
Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael JaquesConstruindo uma aplicação PHP à Prova de Balas - Rafael Jaques
Construindo uma aplicação PHP à Prova de Balas - Rafael Jaques
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
 
Quem tem medo do XSS
Quem tem medo do XSSQuem tem medo do XSS
Quem tem medo do XSS
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
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...
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento Seguro
 
Defensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon JuniorDefensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon Junior
 
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
Blind SQL InjectionAmeaça Oculta - do Ataque a DefesaBlind SQL InjectionAmeaça Oculta - do Ataque a Defesa
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
 
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
Blind SQL InjectionAmeaça Oculta - do Ataque a DefesaBlind SQL InjectionAmeaça Oculta - do Ataque a Defesa
Blind SQL Injection Ameaça Oculta - do Ataque a Defesa
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 

Segurança PHP - por Samyr Abdo

  • 1. SEGURANÇA PHP Samyr Abdo
  • 2. XSS
  • 3. XSS  XSS(Cross Site Scripting) é uma técnica utilizada para roubar sessões (cookies) em uma aplicação web.  Como funciona?  Injeção de tags html e comandos javascript em alguma função de um sistema.
  • 4. XSS  Como atacar?  Simulando o ataque: http://localhost/seguranca/xss.php?temp=<script>alert(doc ument.cookie)</script>
  • 5. XSS  Como se proteger?  htmlspecialchars()  htmlentities()  Converte caracteres especiais para a realidade HTML
  • 7. SESSIONS  Como funciona?  Principais ataques:  Session fixation  Session hijacking.
  • 8. SESSIONS - SESSION FIXATION  Como atacar?  <a href="http://www.dominio- exemplo.com?PHPSESSID=987654321">Acessar< /a>
  • 9. SESSIONS - SESSION FIXATION  Simulando o ataque: <?php session_start(); if (!array_key_exists('visitas', $_SESSION)) $_SESSION['visitas'] = 1; else $_SESSION['visitas']++; echo $_SESSION['visitas']; ?>
  • 10. SESSIONS - SESSION FIXATION  Testando a vulnerabilidade  url + ?PHPSESSID=654321
  • 11. SESSIONS - SESSION FIXATION  Como se proteger?  Basta gerar novamente o identificador de sessão toda vez que o usuário autenticar.Ex.: <?php if (usuario_autenticado()) { session_regenerate_id(); } ?>
  • 12. SESSIONS - SESSSION HIJACKING  Ataque mais difícil de se proteger, porém mais difícil de ser explorado.  Devido ao identificador da sessão estar gravado em um cookie no navegador, o usuário malicioso pode explorar alguma vulnerabilidade do browser ou obter os cookies do navegador através de um ataque chamado XSS.
  • 13. SESSIONS - SESSSION HIJACKING  Como se proteger?  Chegar algum dos headers da aplicação.  Criptografia md5
  • 14. SESSIONS - SESSSION HIJACKING  Header “HTTP_USER_AGENT”  Exemplo do Header no Mozilla: Mozilla/5.0 (Windows NT 6.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1  Exemplo do Header no Chrome: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7
  • 15. SESSIONS - SESSSION HIJACKING Ex: <?php session_start(); if (array_key_exists('HTTP_USER_AGENT', $_SESSION)) { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { /* Acesso inválido. O header User-Agent mudou durante a mesma sessão. */ exit; } } else { /* Primeiro acesso do usuário, vamos gravar na sessão um hash md5 do header User-Agent */ $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); } ?>
  • 17. INCLUDE X REQUIRE  Include(): Tenta incluir uma página. Em caso de erro, o script retorna um warning (aviso) e prossegue com a execução do script.  Require(): Tenta incluir uma página. Em caso de erro, o script retorna um fatal error e aborta a execução do script.
  • 18. INCLUDE X REQUIRE  Como atacar? RFI (Remote File Inclusion) e LFI (Local File Inclusion) Ex: Endereço: index.php?url=[Parâmetro] <?php if (isset($_GET['url'])) { $pg = $_GET['url']; include($pg); } ?>
  • 19. INCLUDE X REQUIRE  Como se proteger?  RFI (Remote File Inclusion) – uso de expressões regulares Endereço: index.php?url=[Parâmetro] <?php if (isset($_GET['url'])) { $pg = $_GET['url']; $testa = '/([http])([:]{1})/'; if (preg_match($testa,$pg) != TRUE) include($pg); else echo „ERRADO‟; } ?>
  • 20. INCLUDE X REQUIRE  Como se proteger?  LFI (Local File Inclusion) – configuração do php.ini  allow_url_fopen = Off permite abrir ou processar uma página ou arquivo externo dentro do script php.
  • 22. PHP.INI  expose_php = off Permite reduzir a quantidade de informações disponíveis para o invasor.
  • 23. PHP.INI – OCULTANDO ERROS  error_reporting = E_ALL display_errors = Off Para que não seja exibido qualquer erro, aviso ou notice no site ou aplicativo.
  • 24. PHP.INI – OCULTANDO ERROS Ex: Ocorreu um erro no banco de dados Error Number: 1054 Unknown column 'ordem' in 'order clause' SELECT `compra_contrata`.* FROM `compra_contrata` WHERE `status` = 1 AND `data_final` >= '2012-01-30' ORDER BY `ordem`
  • 26. INICIALIZAÇÃO DE VARIÁVEIS  Como atacar? <?php if (authenticated_user()) { $authorized = true; } ?>  auth.php?authorized=1
  • 27. INICIALIZAÇÃO DE VARIÁVEIS  Como se proteger ? <?php $authorized = false; if (authenticated_user()) { $authorized = true; } ?>
  • 29. SQL INJECTION  Como atacar?  "SELECT * FROM usuarios WHERE usuario= „{$usuario}‟ AND senha = „{ $senha }‟"
  • 30. SQL INJECTION  Como atacar?  ‘or 1=‘1  SELECT * FROM usuarios WHERE usuario = „ „ AND senha = „ ‟ OR 1=„1‟
  • 31. SQL INJECTION  Como se proteger?  addslashes()/stripslashes(): insere o caracter de escape antes de aspas simples ou duplas, antes da barra invertida e antes do caracter NULL.  mysql_real_escape_string(): Escapa os caracteres especiais numa string para usar em um comando SQL