SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.1. ¿Por qué es importante la seguridad?




   Un gran poder conlleva

   Una gran responsabilidad




Desarrollo web avanzado con PHP 5             Bloque I: Seguridad web
3.1. ¿Por qué es importante la seguridad?


  Prácticamente todas las aplicaciones PHP están desarrolladas
  para la web
                                                    Y la web es un sitio peligroso


   PHP es gratuito y fácil de aprender
                                              PHP es muy atractivo para amateurs



   PHP está siendo utilizado cada vez en sitios más grandes
                             Y la información que gestiona es cada vez más sensible



Desarrollo web avanzado con PHP 5                                    Bloque I: Seguridad web
3.1. ¿Por qué es importante la seguridad?

   Las principales prácticas se puede agrupar en dos ideas




              Validación                  Escapado




Desarrollo web avanzado con PHP 5                    Bloque I: Seguridad web
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.2. Validación


  Todos los datos de entrada están “contaminados”



                                    TODOS LOS DATOS DE
                                    ENTRADA




Desarrollo web avanzado con PHP 5                   Bloque I: Seguridad web
3.2. Validación


  Mis entradas de datos


    Query string
    http://www.google.com/?search=hola

    Canales RSS
    http://www.loalf.com/feed.rss


    API's de terceros                    Formularios
    http://dev.twitter.com

    Cookies


Desarrollo web avanzado con PHP 5          Bloque I: Seguridad web
3.2. Validación


  ¿Por qué hay que validar los datos de entrada?

     Evitar comportamientos no esperados de la aplicación


     Evitar ganar acceso a una aplicación a la que no está autorizado



     Evitar que la aplicación “se rompa” de manera malintencionada




Desarrollo web avanzado con PHP 5                                       Bloque I: Seguridad web
3.2. Validación

  Register Globals

  Es una directiva de configuración que automáticamente inyecta variables en el script.

   <?php 

   // http://www.misitio.com/index.php?name=javi

   echo $name; // javi

   ?>


  Desactivado por defecto desde PHP 4.2.0 y no debería activarse



Desarrollo web avanzado con PHP 5                                     Bloque I: Seguridad web
3.2. Validación

  Un ejemplo

          <form action=”process.php” method=”post” >
            Nombre: <input type=”text” name=”nombre” /><br />
            Edad: <input type=”text” name=”edad” /><br />
            Color preferido:
            <select name=”color” > 
              <option value=”azul”>Azul</option>
              <option value=”verde”>Verde</option>
              <option value=”amarillo”>Amarillo</option>
              <option value=”rojo”>Rojo</option>
            </select>
            <input type=”submit” />
          </form>



Desarrollo web avanzado con PHP 5                         Bloque I: Seguridad web
3.2. Validación

  Validación numérica

   Todos los datos recibidos por PHP (GET/POST/COOKIE) son cadenas de texto.
   Hay que convertirlos a números para que sea más eficiente y menos peligroso.

   Deben ser convertidos a números mediante un casting

    (int) $_POST['edad'];

    (float) $_POST['precio'];




Desarrollo web avanzado con PHP 5                                  Bloque I: Seguridad web
3.2. Validación

  Validación de texto
   PHP viene por defecto con CTYPE, una extensión que permite de manera
   cómoda validar cadenas de texto

    if(!ctype_alnum($_POST['password'])){
      echo “Sólo caracteres A­Za­z0­9 
    permitidos”;
    }

    if(!ctype_alpha($_POST['username'])){
      echo “Sólo caracteres A­Za­z permitidos”;
    }
   Y otras muchas más funciones
   http://php.net/manual/en/book.ctype.php


Desarrollo web avanzado con PHP 5                                Bloque I: Seguridad web
3.2. Validación

  Validación complejas
   ¿Como validar un email, una URL, una IP, un DNI, una fecha? Expresiones
   regulares.

    if(!preg_match(
       '/^w+@[a­zA­Z_]+?.[a­zA­Z]{2,3}$/', 
       $_POST['email'])
    ){

        echo “Email no válido”;
    }


   No hace falta saber expresiones regulares, sólo saber dónde encontrarlas
   http://regexlib.com


Desarrollo web avanzado con PHP 5                                   Bloque I: Seguridad web
3.2. Validación
   Todo cambia



Con letra? España?

                                      Numérico (¿+34?), máx 9 números




     Un email                                                           Igual que el otro

    Obligatorio

  Más campos ...

  Desarrollo web avanzado con PHP 5                               Bloque I: Seguridad web
3.2. Validación

  Validación en cliente vs servidor




     Validación cliente                                 Validación cliente
     Usabilidad                                         Seguridad


                            Nadie dijo que se excluyentes




Desarrollo web avanzado con PHP 5                                   Bloque I: Seguridad web
3.2. Validación

  Burlando formularios

   1. Deshabilitar Javascript


   2. Enviar formularios desde web


   3. Instalando Firebug




Desarrollo web avanzado con PHP 5    Bloque I: Seguridad web
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.3. Escapado

  ¿En que consiste?

  Evitar que el código generado por nuestra aplicación pueda
  resultar dañino



  Dependiendo del dónde imprimamos la información las reglas de
  escapado son diferentes




Desarrollo web avanzado con PHP 5                   Bloque I: Seguridad web
3.3. Escapado

  Escapando datos para generar HTML

                                    htmlentities()


  Ejemplo

    echo htmlentities('<b>Texto en negrita</b>');
    // &gt;b&lt;Texto en negrita&gt;/b&lt;




Desarrollo web avanzado con PHP 5                    Bloque I: Seguridad web
3.3. Escapado

  Escapando datos para generar SQL

                               *_escape_string()


  Para el caso concreto de mysql

    echo mysql_escape_string(“WHERE name='javi'”);
    // WHERE name = 'javi'




Desarrollo web avanzado con PHP 5                  Bloque I: Seguridad web
3.3. Escapado

  Evitad cosas como estas

     $query = “SELECT * FROM users WHERE
               username = '{$_POST['username']}'”;


  Utilizad en su lugar Prepared Statements
 http://www.slideshare.net/flaiwebnected/iniciacin-php-5-php-y-mysql




Desarrollo web avanzado con PHP 5                             Bloque I: Seguridad web
3.3. Escapado



      $sql = 'SELECT * FROM users 
              WHERE username = :username';

      $stmt = $dbh­>prepare($sql);
      $stmt­>bindParam(':username', $clean['username'])

      $stmt­>execute();
      $results = $stmt­>fetchAll();




Desarrollo web avanzado con PHP 5            Bloque I: Seguridad web
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.4. Ataque XSS

  XSS = Cross Site Scripting


   Estos ataques se aprovechan de la confianza del usuario en la aplicación



   El atacante inyecta código JavaScript en nuestra web




Desarrollo web avanzado con PHP 5                                    Bloque I: Seguridad web
3.4. Ataque XSS

  Algunas cosas que podría lograr mediante un ataque XSS

   ●   Robar las cookies de un usuario y entrar en su lugar

   ●   Mostrar una página falsa de login en tu web (phising)

   ●   Llevar a cabo cualquier acción como si fuera otro usuario




Desarrollo web avanzado con PHP 5                                  Bloque I: Seguridad web
3.4. Ataque XSS

  Dos tipos de ataques XSS


   Persistentes

     Son “menos” frecuentes

    Datos introducidos por el usuario son almacenados de manera PERSISTENTE (db)
    y utilizados para generar una página HTML

   Reflejados

     Son los más frecuentes
    Datos introducidos por el usuario son utilizados INMEDIATAMENTE
    para generar una página HTML



Desarrollo web avanzado con PHP 5                                Bloque I: Seguridad web
3.4. Ataque XSS




   Algunos ejemplos...

                          … malignos




Desarrollo web avanzado con PHP 5      Bloque I: Seguridad web
3.4. Ataque XSS


  ¿Quién es Samy? http://namb.la/popular/

   Un agujero XSS en el filtro HTML de MySpace


    Cuando visitabas el perfil de Samy

          - Te añadía a tí como amigo suyo

          - Se clonaba en tu propio perfil


    En 20 y tras un millón de peticiones amigos MySpace se vino abajo



Desarrollo web avanzado con PHP 5                                   Bloque I: Seguridad web
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.5. Ataque CSRF


  CSRF = Cross site request forgery

   Explota la confianza de un sitio web en un usuario


   La víctima del ataque lanza una petición HTTP sin saberlo, normalmente a URLs
   Que requieren de un acceso privilegiado.


   El escapado evitará que tu aplicación sirva de vehículo para ataques CSRF
   pero no evitará que los recibas.




Desarrollo web avanzado con PHP 5                                   Bloque I: Seguridad web
3.5. Ataque CSRF




                      Un ejemplo de ataque CSRF




Desarrollo web avanzado con PHP 5                 Bloque I: Seguridad web
3.5. Ataque CSRF

   Cómo protegerse de este tipo de ataques
    <?php
    session_start();
    $token = md5(uniqid(rand(), TRUE));
    $_SESSION['token'] = $token;
    ?>

    <form action=”miform.php” method=”POST”>
      ...
      <input type=”hidden” 
                   name=”token” 
                   value=”<?php echo $token; ?>”
      />
    </form>
Desarrollo web avanzado con PHP 5                  Bloque I: Seguridad web
3.5. Ataque CSRF

   Cómo protegerse de este tipo de ataques
    <?php

    if(isset($_SESSION['token'])
      && isset($_POST['token'])
      && $_POST['token'] == $_SESSION['token']
    ){
      //No es un ataque CSRF
    }

    ?>




Desarrollo web avanzado con PHP 5            Bloque I: Seguridad web
3.5. Ataque CSRF

   Google tampoco se salva

   http://www.securiteam.com/securitynews/5ZP010UQKK.html


    Mediante un ataque CSRF se podía cambiar la contraseña de un usuario




Desarrollo web avanzado con PHP 5                                 Bloque I: Seguridad web
Bloque I: Seguridad web
                 1. ¿Por qué es importante la seguridad?
                 2. Validación
                 3. Escapado
                 4. Ataques XSS
                 5. Ataques CSRF
                 5. SQL-Injection
                 6. Code Injection
                 7. Session riding



                                                      *POO = Programación Orientada a Objetos

Curso de Introducción a PHP 5
3.6. SQL Injections


  SQL injections o inyección de SQL

   Un usuario utiliza alguna de las entradas (normalmente formularios) para modificar
   las sentencias SQL en la aplicación.

   Las entradas consisten en código SQL parcial, que combinado con el existente da
   lugar a un comportamiento no deseado



   Cómo protegerse: escapa los parámetros de tus sentencias SQL




Desarrollo web avanzado con PHP 5                                     Bloque I: Seguridad web
3.6. SQL Injections


  Un ejemplo (un clásico)

   Formulario de acceso a una zona restriginda (formulario de login)

   <form action=”login.php” action=”POST”>
     usuario: <input type=”text” name=”username” />
     <br />
     contraseña: <input type=”password” name=”password” />
     <br />
     <input type=”submit” />
   </form>



Desarrollo web avanzado con PHP 5                                      Bloque I: Seguridad web
3.6. SQL Injections


  Un ejemplo (un clásico)

   En algún lugar de nuestro script comprobamos que ese usuario existe de la
   siguiente manera

   $username = $_POST['username'];
   $password = $_POST['password'];
   $sql = “SELECT *
           FORM users
           WHERE username = '{$username}'
           AND password = '{$password}'”;
   // Continuamos con el resto
   if(count($results)>0){ // login }

Desarrollo web avanzado con PHP 5                                   Bloque I: Seguridad web
3.6. SQL Injections


  Un ejemplo (un clásico)

   Que ocurre si el usuario introduce

                        username' OR 1=1 ­­


   Tenemos esto

     SELECT *
     FORM users
     WHERE username = 'username' 
     OR 1=1 ­­'AND password = 'contraseña'


Desarrollo web avanzado con PHP 5             Bloque I: Seguridad web
3.6. SQL Injections




Desarrollo web avanzado con PHP 5   Bloque I: Seguridad web

Más contenido relacionado

La actualidad más candente

Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2César Hernández
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpSamuel Piñon Garcia
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqlJuan Timoteo Cori
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3ADWE Team
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosRightster
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoRaul Fraile
 

La actualidad más candente (20)

Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en php
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 

Similar a PHP Avanzado: Seguridad Web

Seminario Seguridad con PHP
Seminario Seguridad con PHPSeminario Seguridad con PHP
Seminario Seguridad con PHPNazareno Lorenzo
 
Springio2012 taller-seguridad-web-springsecurity-3
Springio2012 taller-seguridad-web-springsecurity-3Springio2012 taller-seguridad-web-springsecurity-3
Springio2012 taller-seguridad-web-springsecurity-3Fernando Redondo Ramírez
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP7th_Sign
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP7th_Sign
 
Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012iesgrancapitan.org
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPMoises Silva
 
Ponencia sql avanzado y automatizado
Ponencia sql avanzado y automatizadoPonencia sql avanzado y automatizado
Ponencia sql avanzado y automatizadon3xasec
 
Seguridad en aplicaciones web
Seguridad en aplicaciones webSeguridad en aplicaciones web
Seguridad en aplicaciones webJose Mato
 
Seguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoSeguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoRené Olivo
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Webacksec
 
Introducción a symfony - decharlas
Introducción a symfony - decharlasIntroducción a symfony - decharlas
Introducción a symfony - decharlasDecharlas
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Alfonso Alba
 
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Oskar Laguillo
 

Similar a PHP Avanzado: Seguridad Web (20)

Seminario Seguridad con PHP
Seminario Seguridad con PHPSeminario Seguridad con PHP
Seminario Seguridad con PHP
 
Springio2012 taller-seguridad-web-springsecurity-3
Springio2012 taller-seguridad-web-springsecurity-3Springio2012 taller-seguridad-web-springsecurity-3
Springio2012 taller-seguridad-web-springsecurity-3
 
Seguridad en php
Seguridad en phpSeguridad en php
Seguridad en php
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHP
 
Ponencia sql avanzado y automatizado
Ponencia sql avanzado y automatizadoPonencia sql avanzado y automatizado
Ponencia sql avanzado y automatizado
 
Seguridad en aplicaciones web
Seguridad en aplicaciones webSeguridad en aplicaciones web
Seguridad en aplicaciones web
 
Seguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio ElectrónicoSeguridad en Aplicaciones Web y Comercio Electrónico
Seguridad en Aplicaciones Web y Comercio Electrónico
 
Los 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo WebLos 7 pecados del Desarrollo Web
Los 7 pecados del Desarrollo Web
 
WebAttack - Presentación
WebAttack - PresentaciónWebAttack - Presentación
WebAttack - Presentación
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
Introducción a symfony - decharlas
Introducción a symfony - decharlasIntroducción a symfony - decharlas
Introducción a symfony - decharlas
 
Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01Plantillajornadasversion2 100708010347-phpapp01
Plantillajornadasversion2 100708010347-phpapp01
 
Introduccion a symfony
Introduccion a symfonyIntroduccion a symfony
Introduccion a symfony
 
Intro Guía de Testing OWASP
Intro Guía de Testing OWASPIntro Guía de Testing OWASP
Intro Guía de Testing OWASP
 
CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
Temario php
Temario phpTemario php
Temario php
 
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
Virus, el arte de algunos - Alberto García de Dios (/Rooted CON 2011)
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 

PHP Avanzado: Seguridad Web

  • 1. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 2. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 3. 3.1. ¿Por qué es importante la seguridad? Un gran poder conlleva Una gran responsabilidad Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 4. 3.1. ¿Por qué es importante la seguridad? Prácticamente todas las aplicaciones PHP están desarrolladas para la web Y la web es un sitio peligroso PHP es gratuito y fácil de aprender PHP es muy atractivo para amateurs PHP está siendo utilizado cada vez en sitios más grandes Y la información que gestiona es cada vez más sensible Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 5. 3.1. ¿Por qué es importante la seguridad? Las principales prácticas se puede agrupar en dos ideas Validación Escapado Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 6. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 7. 3.2. Validación Todos los datos de entrada están “contaminados” TODOS LOS DATOS DE ENTRADA Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 8. 3.2. Validación Mis entradas de datos Query string http://www.google.com/?search=hola Canales RSS http://www.loalf.com/feed.rss API's de terceros Formularios http://dev.twitter.com Cookies Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 9. 3.2. Validación ¿Por qué hay que validar los datos de entrada? Evitar comportamientos no esperados de la aplicación Evitar ganar acceso a una aplicación a la que no está autorizado Evitar que la aplicación “se rompa” de manera malintencionada Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 10. 3.2. Validación Register Globals Es una directiva de configuración que automáticamente inyecta variables en el script. <?php  // http://www.misitio.com/index.php?name=javi echo $name; // javi ?> Desactivado por defecto desde PHP 4.2.0 y no debería activarse Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 11. 3.2. Validación Un ejemplo <form action=”process.php” method=”post” >   Nombre: <input type=”text” name=”nombre” /><br />   Edad: <input type=”text” name=”edad” /><br />   Color preferido:   <select name=”color” >      <option value=”azul”>Azul</option>     <option value=”verde”>Verde</option>     <option value=”amarillo”>Amarillo</option>     <option value=”rojo”>Rojo</option>   </select>   <input type=”submit” /> </form> Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 12. 3.2. Validación Validación numérica Todos los datos recibidos por PHP (GET/POST/COOKIE) son cadenas de texto. Hay que convertirlos a números para que sea más eficiente y menos peligroso. Deben ser convertidos a números mediante un casting (int) $_POST['edad']; (float) $_POST['precio']; Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 13. 3.2. Validación Validación de texto PHP viene por defecto con CTYPE, una extensión que permite de manera cómoda validar cadenas de texto if(!ctype_alnum($_POST['password'])){   echo “Sólo caracteres A­Za­z0­9  permitidos”; } if(!ctype_alpha($_POST['username'])){   echo “Sólo caracteres A­Za­z permitidos”; } Y otras muchas más funciones http://php.net/manual/en/book.ctype.php Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 14. 3.2. Validación Validación complejas ¿Como validar un email, una URL, una IP, un DNI, una fecha? Expresiones regulares. if(!preg_match( '/^w+@[a­zA­Z_]+?.[a­zA­Z]{2,3}$/',  $_POST['email']) ){ echo “Email no válido”; } No hace falta saber expresiones regulares, sólo saber dónde encontrarlas http://regexlib.com Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 15. 3.2. Validación Todo cambia Con letra? España? Numérico (¿+34?), máx 9 números Un email Igual que el otro Obligatorio Más campos ... Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 16. 3.2. Validación Validación en cliente vs servidor Validación cliente Validación cliente Usabilidad Seguridad Nadie dijo que se excluyentes Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 17. 3.2. Validación Burlando formularios 1. Deshabilitar Javascript 2. Enviar formularios desde web 3. Instalando Firebug Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 18. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 19. 3.3. Escapado ¿En que consiste? Evitar que el código generado por nuestra aplicación pueda resultar dañino Dependiendo del dónde imprimamos la información las reglas de escapado son diferentes Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 20. 3.3. Escapado Escapando datos para generar HTML htmlentities() Ejemplo echo htmlentities('<b>Texto en negrita</b>'); // &gt;b&lt;Texto en negrita&gt;/b&lt; Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 21. 3.3. Escapado Escapando datos para generar SQL *_escape_string() Para el caso concreto de mysql echo mysql_escape_string(“WHERE name='javi'”); // WHERE name = 'javi' Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 22. 3.3. Escapado Evitad cosas como estas $query = “SELECT * FROM users WHERE           username = '{$_POST['username']}'”; Utilizad en su lugar Prepared Statements http://www.slideshare.net/flaiwebnected/iniciacin-php-5-php-y-mysql Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 23. 3.3. Escapado $sql = 'SELECT * FROM users          WHERE username = :username'; $stmt = $dbh­>prepare($sql); $stmt­>bindParam(':username', $clean['username']) $stmt­>execute(); $results = $stmt­>fetchAll(); Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 24. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 25. 3.4. Ataque XSS XSS = Cross Site Scripting Estos ataques se aprovechan de la confianza del usuario en la aplicación El atacante inyecta código JavaScript en nuestra web Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 26. 3.4. Ataque XSS Algunas cosas que podría lograr mediante un ataque XSS ● Robar las cookies de un usuario y entrar en su lugar ● Mostrar una página falsa de login en tu web (phising) ● Llevar a cabo cualquier acción como si fuera otro usuario Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 27. 3.4. Ataque XSS Dos tipos de ataques XSS Persistentes Son “menos” frecuentes Datos introducidos por el usuario son almacenados de manera PERSISTENTE (db) y utilizados para generar una página HTML Reflejados Son los más frecuentes Datos introducidos por el usuario son utilizados INMEDIATAMENTE para generar una página HTML Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 28. 3.4. Ataque XSS Algunos ejemplos... … malignos Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 29. 3.4. Ataque XSS ¿Quién es Samy? http://namb.la/popular/ Un agujero XSS en el filtro HTML de MySpace Cuando visitabas el perfil de Samy - Te añadía a tí como amigo suyo - Se clonaba en tu propio perfil En 20 y tras un millón de peticiones amigos MySpace se vino abajo Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 30. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 31. 3.5. Ataque CSRF CSRF = Cross site request forgery Explota la confianza de un sitio web en un usuario La víctima del ataque lanza una petición HTTP sin saberlo, normalmente a URLs Que requieren de un acceso privilegiado. El escapado evitará que tu aplicación sirva de vehículo para ataques CSRF pero no evitará que los recibas. Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 32. 3.5. Ataque CSRF Un ejemplo de ataque CSRF Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 33. 3.5. Ataque CSRF Cómo protegerse de este tipo de ataques <?php session_start(); $token = md5(uniqid(rand(), TRUE)); $_SESSION['token'] = $token; ?> <form action=”miform.php” method=”POST”>   ...   <input type=”hidden”   name=”token”   value=”<?php echo $token; ?>”   /> </form> Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 34. 3.5. Ataque CSRF Cómo protegerse de este tipo de ataques <?php if(isset($_SESSION['token'])   && isset($_POST['token'])   && $_POST['token'] == $_SESSION['token'] ){   //No es un ataque CSRF } ?> Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 35. 3.5. Ataque CSRF Google tampoco se salva http://www.securiteam.com/securitynews/5ZP010UQKK.html Mediante un ataque CSRF se podía cambiar la contraseña de un usuario Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 36. Bloque I: Seguridad web 1. ¿Por qué es importante la seguridad? 2. Validación 3. Escapado 4. Ataques XSS 5. Ataques CSRF 5. SQL-Injection 6. Code Injection 7. Session riding *POO = Programación Orientada a Objetos Curso de Introducción a PHP 5
  • 37. 3.6. SQL Injections SQL injections o inyección de SQL Un usuario utiliza alguna de las entradas (normalmente formularios) para modificar las sentencias SQL en la aplicación. Las entradas consisten en código SQL parcial, que combinado con el existente da lugar a un comportamiento no deseado Cómo protegerse: escapa los parámetros de tus sentencias SQL Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 38. 3.6. SQL Injections Un ejemplo (un clásico) Formulario de acceso a una zona restriginda (formulario de login) <form action=”login.php” action=”POST”>   usuario: <input type=”text” name=”username” />   <br />   contraseña: <input type=”password” name=”password” />   <br />   <input type=”submit” /> </form> Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 39. 3.6. SQL Injections Un ejemplo (un clásico) En algún lugar de nuestro script comprobamos que ese usuario existe de la siguiente manera $username = $_POST['username']; $password = $_POST['password']; $sql = “SELECT *         FORM users         WHERE username = '{$username}'         AND password = '{$password}'”; // Continuamos con el resto if(count($results)>0){ // login } Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 40. 3.6. SQL Injections Un ejemplo (un clásico) Que ocurre si el usuario introduce username' OR 1=1 ­­ Tenemos esto SELECT * FORM users WHERE username = 'username'  OR 1=1 ­­'AND password = 'contraseña' Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web
  • 41. 3.6. SQL Injections Desarrollo web avanzado con PHP 5 Bloque I: Seguridad web