FACULTAD DE INGENIERÍA Escuela Profesional de Ingeniería Informática y de Sistemas
SEGURIDAD EN PHP USO DE SESIONES
Introducción Qué son las sesiones? Las sesiones son un mecanismo basado en cookies que permiten identificar a los usuarios que acceden a un sitio Web, de esta manera almacenar información referente a sus transacciones.
Empezar una Sesión Para empezar a trabajar una sesión en PHP lo primero es iniciarla la sesión, para ello tenemos dos caminos: session_start() session_register(‘mi_var’)
Empezar una Sesión –  session_start() Usaremos como ejemplo para iniciar una sesión con  la función  session_start() , esta función debe estar ANTES de cualquier otro código. <?php   session_start();  sentencias PHP; … ?> - Esta función en caso  de que el visitante no tenga una sesión la crea y si ya tiene una sesión continúa en ella.
Empezar una Sesión –  session_start() SID (Session ID) PHP para identificar una sesión, lo realiza a través de un número SID. Esto se le proporciona al cliente para identificarse de forma exclusiva. Este SID siempre se crea al usar la función session_start(). Si se usa session_register(). El valor del SID se almacena en la variable global PHPSESSID.
ID de una Sesión –  session_id() Se usa para proporcionar (leer) el número ID de sesión que se ha inicializado. También se usa esta función para cambiar el ID de la sesión actual. echo (&quot;TU ID: &quot;.  session_id()  );
Almacenar Información –  $_SESSION Es un arreglo (matriz) asociativa que contiene las variables de sesión disponibles en la aplicación web actual. $_SESSION [“autorizado&quot;] = &quot;OK&quot;
Función:  session_unset Elimina todas la variables de la sesión.
Función:  session_destroy Destruir la sesión
Ejemplo:  01
Ejemplo:  01- index.php <?php session_start(); ?> <p>BIENVENIDOS</p> <form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;pagina2.php&quot;> <p>Nombre  <input name=&quot;txt_nombre&quot; type=&quot;text&quot; id=&quot;txt_nombre&quot;> <?php $_SESSION[&quot;ESTADO&quot;]  =  &quot;OK&quot; ?> </p> <p> <input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Enviar&quot;> </p> </form> Crear Sesión Crear Variable de Sesión
Ejemplo:  01 – pagina2.html <?php session_start(); if ($_SESSION[&quot;ESTADO&quot;] != &quot;OK&quot;)   header(&quot;Location:  index.php &quot;); ?> <?php echo (&quot;Hola &quot;.$_POST[&quot;txt_nombre&quot;]); ?>
Ejemplo:  02 – index.php
Ejemplo:  02 – index.php <form action=&quot;control.php&quot; method=&quot;POST&quot;> <tr> <td colspan=&quot;2&quot; align=&quot;center&quot;  <?PHP if ($_GET[&quot;errorusuario&quot;]==&quot;si&quot;){?> bgcolor=red><span style=&quot;color:ffffff&quot;><b>Datos incorrectos</b></span> <?PHP }else{?> bgcolor=#cccccc>Introduce tu clave de acceso <?PHP }?> </td> </tr><br> <tr> <td align=&quot;right&quot;>Usuario:</td> <td><input type=&quot;Text&quot; name=&quot; usuario &quot; size=&quot;8&quot; maxlength=&quot;50&quot;></td> </tr><br> <tr> <td align=&quot;right&quot;>Clave:</td> <td><input type=&quot;password&quot; name=&quot; contrasena &quot; size=&quot;8&quot; maxlength=&quot;50&quot;></td> </tr><br> <tr>  <td>   <input type=&quot;Submit“ value=&quot;ENTRAR&quot;></td> </tr> </form>
Ejemplo:  02 – control.php <?PHP session_start(); //vemos si el usuario y contraseña es válido if ($_POST[&quot;usuario&quot;]==“coquito&quot; && $_POST[&quot;contrasena&quot;]==&quot;123&quot;){ //usuario y contraseña válidos //Crear variable para la sesión $_SESSION[&quot;autentificado&quot;]= “1&quot;; $_SESSION[&quot;user&quot;]= $_POST[&quot;usuario&quot;]; $_SESSION[&quot;pass&quot;]= $_POST[&quot;contrasena&quot;]; header (&quot;Location:  aplicacion.php &quot;); }else { //si no existe, ir a la Página de Inicio header(&quot;Location:  index.php?errorusuario=si &quot;); } ?>
Ejemplo:  02 – aplicacion.php <?PHP include (&quot; seguridad.php &quot;);?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Bienvenido  <?PHP echo $_SESSION[&quot;user&quot;];?> </h1> <br> ---- <br> Usuario:  <?PHP echo $_SESSION[&quot;user&quot;];?> <br> ---- <br><br> <a href=&quot; otra.php &quot;>Continuar</a> </body> </html>
Ejemplo:  02 – seguridad.php <?PHP //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO if  ($_SESSION[&quot;autentificado&quot;] != “1&quot; ) { //si no existe, se dirige a la Página de Inicio header(&quot;Location:  index.php &quot;); //salimos del script exit(); } ?>
Ejemplo:  02 – otra.php <?PHP include (&quot; seguridad.php &quot;);?> <html> <head> <title>Empresa XYZ</title> </head> <body> <h1>Bienvenido  <?PHP echo $_SESSION[&quot;user&quot;];?> </h1> <br><hr>  Sistema de la Empresa XYZ<hr> <br> <br><br> <a href=&quot; salir.php &quot;>Salir</a> </body> </html>
Ejemplo:  02 – salir.php <?PHP session_start(); session_destroy(); ?> <html> <head>  <title>Fin de Sesión</title>  </head> <body> Gracias por tu acceso…  <br><br> <a href=&quot; index.php &quot;>Ir a la Página de Inicio</a> </body> </html>
Ejemplo:  02 Home Page index.php control.php salir.php otra.php aplicacion.php seguridad.php Ingreso de Datos Validar Datos y Crear  Variables de Sesion Datos Erróneos Datos OK Página Segura Página Segura
FUNCIONES HEADER() INCLUDE()
Redireccionar –  header() header (&quot; Location:  http://www.php.net&quot;);  exit; Cabecera &quot;Location:&quot;  header (&quot; Location:  index.php?error=1&quot;);
Reutilizar Código –  include() Permite reutilizar porciones de código (script, o simple html) cuantas veces quieras. Es decir pega el código en donde es llamado.
ALGORITMOS
Algoritmo –  01 index.php < form  method=&quot;post&quot; action=&quot; comprobar.php &quot;> <p>Leer  <input name=&quot;txt_x&quot; type=&quot;text&quot; > </p> <p> <input type=&quot;submit&quot; value=&quot;Enviar&quot;> </p> </form>
Algoritmo –  01 comprobar.php <?php // Comprueba un Campo Ej. Nombre // Ambito: Solo String y Longitud 2..20 function   comprobar_cadena_limite ($nombre_usuario ) { if ( ereg (&quot;^[a-zA-Z\-_]{2,20}$&quot;,  $nombre_usuario )) { return true; } else { return false; } } $vX = $_POST[&quot;txt_x&quot;]; if ( comprobar_cadena_limite($vX) ) echo (&quot;OK&quot;); else  echo (&quot;Error&quot;); ?>
Algoritmo –  01 ereg (&quot;^[ a-zA-Z \-_ ]{2,20} $ &quot;,  $nombre_usuario ) Función EREG : ejecuta el matching de una expresión regular.  Termino de Cadena Variable a Evualar Rango 2..20 de caracteres permitidos Permitir estos caracteres especiales Permitir solo letras &quot;^[a-zA-Z0-9\-_]{2,20}$&quot;

Sesiones en Php

  • 1.
    FACULTAD DE INGENIERÍAEscuela Profesional de Ingeniería Informática y de Sistemas
  • 2.
    SEGURIDAD EN PHPUSO DE SESIONES
  • 3.
    Introducción Qué sonlas sesiones? Las sesiones son un mecanismo basado en cookies que permiten identificar a los usuarios que acceden a un sitio Web, de esta manera almacenar información referente a sus transacciones.
  • 4.
    Empezar una SesiónPara empezar a trabajar una sesión en PHP lo primero es iniciarla la sesión, para ello tenemos dos caminos: session_start() session_register(‘mi_var’)
  • 5.
    Empezar una Sesión– session_start() Usaremos como ejemplo para iniciar una sesión con la función session_start() , esta función debe estar ANTES de cualquier otro código. <?php session_start(); sentencias PHP; … ?> - Esta función en caso de que el visitante no tenga una sesión la crea y si ya tiene una sesión continúa en ella.
  • 6.
    Empezar una Sesión– session_start() SID (Session ID) PHP para identificar una sesión, lo realiza a través de un número SID. Esto se le proporciona al cliente para identificarse de forma exclusiva. Este SID siempre se crea al usar la función session_start(). Si se usa session_register(). El valor del SID se almacena en la variable global PHPSESSID.
  • 7.
    ID de unaSesión – session_id() Se usa para proporcionar (leer) el número ID de sesión que se ha inicializado. También se usa esta función para cambiar el ID de la sesión actual. echo (&quot;TU ID: &quot;. session_id() );
  • 8.
    Almacenar Información – $_SESSION Es un arreglo (matriz) asociativa que contiene las variables de sesión disponibles en la aplicación web actual. $_SESSION [“autorizado&quot;] = &quot;OK&quot;
  • 9.
    Función: session_unsetElimina todas la variables de la sesión.
  • 10.
    Función: session_destroyDestruir la sesión
  • 11.
  • 12.
    Ejemplo: 01-index.php <?php session_start(); ?> <p>BIENVENIDOS</p> <form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;pagina2.php&quot;> <p>Nombre <input name=&quot;txt_nombre&quot; type=&quot;text&quot; id=&quot;txt_nombre&quot;> <?php $_SESSION[&quot;ESTADO&quot;] = &quot;OK&quot; ?> </p> <p> <input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Enviar&quot;> </p> </form> Crear Sesión Crear Variable de Sesión
  • 13.
    Ejemplo: 01– pagina2.html <?php session_start(); if ($_SESSION[&quot;ESTADO&quot;] != &quot;OK&quot;) header(&quot;Location: index.php &quot;); ?> <?php echo (&quot;Hola &quot;.$_POST[&quot;txt_nombre&quot;]); ?>
  • 14.
    Ejemplo: 02– index.php
  • 15.
    Ejemplo: 02– index.php <form action=&quot;control.php&quot; method=&quot;POST&quot;> <tr> <td colspan=&quot;2&quot; align=&quot;center&quot; <?PHP if ($_GET[&quot;errorusuario&quot;]==&quot;si&quot;){?> bgcolor=red><span style=&quot;color:ffffff&quot;><b>Datos incorrectos</b></span> <?PHP }else{?> bgcolor=#cccccc>Introduce tu clave de acceso <?PHP }?> </td> </tr><br> <tr> <td align=&quot;right&quot;>Usuario:</td> <td><input type=&quot;Text&quot; name=&quot; usuario &quot; size=&quot;8&quot; maxlength=&quot;50&quot;></td> </tr><br> <tr> <td align=&quot;right&quot;>Clave:</td> <td><input type=&quot;password&quot; name=&quot; contrasena &quot; size=&quot;8&quot; maxlength=&quot;50&quot;></td> </tr><br> <tr> <td> <input type=&quot;Submit“ value=&quot;ENTRAR&quot;></td> </tr> </form>
  • 16.
    Ejemplo: 02– control.php <?PHP session_start(); //vemos si el usuario y contraseña es válido if ($_POST[&quot;usuario&quot;]==“coquito&quot; && $_POST[&quot;contrasena&quot;]==&quot;123&quot;){ //usuario y contraseña válidos //Crear variable para la sesión $_SESSION[&quot;autentificado&quot;]= “1&quot;; $_SESSION[&quot;user&quot;]= $_POST[&quot;usuario&quot;]; $_SESSION[&quot;pass&quot;]= $_POST[&quot;contrasena&quot;]; header (&quot;Location: aplicacion.php &quot;); }else { //si no existe, ir a la Página de Inicio header(&quot;Location: index.php?errorusuario=si &quot;); } ?>
  • 17.
    Ejemplo: 02– aplicacion.php <?PHP include (&quot; seguridad.php &quot;);?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Bienvenido <?PHP echo $_SESSION[&quot;user&quot;];?> </h1> <br> ---- <br> Usuario: <?PHP echo $_SESSION[&quot;user&quot;];?> <br> ---- <br><br> <a href=&quot; otra.php &quot;>Continuar</a> </body> </html>
  • 18.
    Ejemplo: 02– seguridad.php <?PHP //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO if ($_SESSION[&quot;autentificado&quot;] != “1&quot; ) { //si no existe, se dirige a la Página de Inicio header(&quot;Location: index.php &quot;); //salimos del script exit(); } ?>
  • 19.
    Ejemplo: 02– otra.php <?PHP include (&quot; seguridad.php &quot;);?> <html> <head> <title>Empresa XYZ</title> </head> <body> <h1>Bienvenido <?PHP echo $_SESSION[&quot;user&quot;];?> </h1> <br><hr> Sistema de la Empresa XYZ<hr> <br> <br><br> <a href=&quot; salir.php &quot;>Salir</a> </body> </html>
  • 20.
    Ejemplo: 02– salir.php <?PHP session_start(); session_destroy(); ?> <html> <head> <title>Fin de Sesión</title> </head> <body> Gracias por tu acceso… <br><br> <a href=&quot; index.php &quot;>Ir a la Página de Inicio</a> </body> </html>
  • 21.
    Ejemplo: 02Home Page index.php control.php salir.php otra.php aplicacion.php seguridad.php Ingreso de Datos Validar Datos y Crear Variables de Sesion Datos Erróneos Datos OK Página Segura Página Segura
  • 22.
  • 23.
    Redireccionar – header() header (&quot; Location: http://www.php.net&quot;); exit; Cabecera &quot;Location:&quot; header (&quot; Location: index.php?error=1&quot;);
  • 24.
    Reutilizar Código – include() Permite reutilizar porciones de código (script, o simple html) cuantas veces quieras. Es decir pega el código en donde es llamado.
  • 25.
  • 26.
    Algoritmo – 01 index.php < form method=&quot;post&quot; action=&quot; comprobar.php &quot;> <p>Leer <input name=&quot;txt_x&quot; type=&quot;text&quot; > </p> <p> <input type=&quot;submit&quot; value=&quot;Enviar&quot;> </p> </form>
  • 27.
    Algoritmo – 01 comprobar.php <?php // Comprueba un Campo Ej. Nombre // Ambito: Solo String y Longitud 2..20 function comprobar_cadena_limite ($nombre_usuario ) { if ( ereg (&quot;^[a-zA-Z\-_]{2,20}$&quot;, $nombre_usuario )) { return true; } else { return false; } } $vX = $_POST[&quot;txt_x&quot;]; if ( comprobar_cadena_limite($vX) ) echo (&quot;OK&quot;); else echo (&quot;Error&quot;); ?>
  • 28.
    Algoritmo – 01 ereg (&quot;^[ a-zA-Z \-_ ]{2,20} $ &quot;, $nombre_usuario ) Función EREG : ejecuta el matching de una expresión regular. Termino de Cadena Variable a Evualar Rango 2..20 de caracteres permitidos Permitir estos caracteres especiales Permitir solo letras &quot;^[a-zA-Z0-9\-_]{2,20}$&quot;