Sesiones en Php

Post on 18-Dec-2014

67.571 views 8 download

description

Seguridad en PHP con el uso de Sesiones Ing. Fabian Guerrero Medina

Transcript of Sesiones en Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

1

FACULTAD DE INGENIERÍAEscuela Profesional de Ingeniería Informática y de Sistemas

Ingº CIP Fabian Guerrero Medina Master Web Developer

2

SEGURIDAD EN PHP USO DE SESIONESSEGURIDAD EN PHP USO DE SESIONES

Ingº CIP Fabian Guerrero Medina Master Web Developer

3

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.

Ingº CIP Fabian Guerrero Medina Master Web Developer

4

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:

1.1. session_start()session_start()

2.2. session_register(‘mi_var’)session_register(‘mi_var’)

Ingº CIP Fabian Guerrero Medina Master Web Developer

5

Empezar una Sesión – session_start()

Usaremos como ejemplo para iniciar una sesión con la función session_start()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.

Ingº CIP Fabian Guerrero Medina Master Web Developer

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.

Ingº CIP Fabian Guerrero Medina Master Web Developer

7

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 ("TU ID: ". session_id()session_id() );

Ingº CIP Fabian Guerrero Medina Master Web Developer

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"] = "OK"

Ingº CIP Fabian Guerrero Medina Master Web Developer

9

Función: session_unset

Elimina todas la variables de la sesión.

Ingº CIP Fabian Guerrero Medina Master Web Developer

10

Función: session_destroy

Destruir la sesión

Ingº CIP Fabian Guerrero Medina Master Web Developer

11

Ejemplo: 01

Ingº CIP Fabian Guerrero Medina Master Web Developer

12

Ejemplo: 01- index.php

<?phpsession_start();

?>

<p>BIENVENIDOS</p>

<form name="form1" method="post" action="pagina2.php"> <p>Nombre <input name="txt_nombre" type="text" id="txt_nombre">

<?php$_SESSION["ESTADO"] = "OK"

?> </p> <p> <input type="submit" name="Submit" value="Enviar"> </p></form>

Crear Sesión

Crear Variable de Sesión

Ingº CIP Fabian Guerrero Medina Master Web Developer

13

Ejemplo: 01 – pagina2.html

<?phpsession_start();

if ($_SESSION["ESTADO"] != "OK") header("Location: index.php");

?>

<?phpecho ("Hola ".$_POST["txt_nombre"]);

?>

Ingº CIP Fabian Guerrero Medina Master Web Developer

14

Ejemplo: 02 – index.php

Ingº CIP Fabian Guerrero Medina Master Web Developer

15

Ejemplo: 02 – index.php

<form action="control.php" method="POST"> <tr> <td colspan="2" align="center"

<?PHP if ($_GET["errorusuario"]=="si"){?> bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>

<?PHP }else{?>bgcolor=#cccccc>Introduce tu clave de acceso

<?PHP }?></td> </tr><br> <tr> <td align="right">Usuario:</td> <td><input type="Text" name="usuario" size="8" maxlength="50"></td> </tr><br> <tr> <td align="right">Clave:</td> <td><input type="password" name="contrasena" size="8" maxlength="50"></td> </tr><br> <tr> <td> <input type="Submit“ value="ENTRAR"></td> </tr></form>

Ingº CIP Fabian Guerrero Medina Master Web Developer

16

Ejemplo: 02 – control.php

<?PHPsession_start();

//vemos si el usuario y contraseña es válido

if ($_POST["usuario"]==“coquito" && $_POST["contrasena"]=="123"){//usuario y contraseña válidos//Crear variable para la sesión

$_SESSION["autentificado"]= “1";$_SESSION["user"]= $_POST["usuario"];$_SESSION["pass"]= $_POST["contrasena"];header ("Location: aplicacion.php");

}else {//si no existe, ir a la Página de Inicioheader("Location: index.php?errorusuario=si");

}?>

Ingº CIP Fabian Guerrero Medina Master Web Developer

17

Ejemplo: 02 – aplicacion.php

<?PHP include ("seguridad.php");?><html><head>

<title>Aplicación segura</title></head><body> <h1>Bienvenido <?PHP echo $_SESSION["user"];?></h1> <br> ---- <br> Usuario: <?PHP echo $_SESSION["user"];?> <br> ---- <br><br> <a href="otra.php">Continuar</a> </body></html>

Ingº CIP Fabian Guerrero Medina Master Web Developer

18

Ejemplo: 02 – seguridad.php

<?PHP//Inicio la sesión

session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO

if ($_SESSION["autentificado"] != “1") {//si no existe, se dirige a la Página de Inicio

header("Location: index.php");//salimos del script

exit();}?>

Ingº CIP Fabian Guerrero Medina Master Web Developer

19

Ejemplo: 02 – otra.php

<?PHP include ("seguridad.php");?><html> <head>

<title>Empresa XYZ</title> </head>

<body> <h1>Bienvenido <?PHP echo $_SESSION["user"];?></h1> <br><hr> Sistema de la Empresa XYZ<hr><br> <br><br> <a href="salir.php">Salir</a> </body></html>

Ingº CIP Fabian Guerrero Medina Master Web Developer

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="index.php">Ir a la Página de Inicio</a>

</body>

</html>

Ingº CIP Fabian Guerrero Medina Master Web Developer

21

Ejemplo: 02

HomePage

index.php control.php

salir.phpotra.php

aplicacion.php

seguridad.php

Ingreso de DatosValidar Datos y Crear Variables de Sesion

Datos Erróneos

Datos OK

Página Segura

Página Segura

Ingº CIP Fabian Guerrero Medina Master Web Developer

22

Ingº CIP Fabian Guerrero Medina Master Web Developer

23

Redireccionar – header()

header("Location: http://www.php.net"); exit;

Cabecera "Location:"

header("Location: index.php?error=1");

Ingº CIP Fabian Guerrero Medina Master Web Developer

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.

Ingº CIP Fabian Guerrero Medina Master Web Developer

25

Ingº CIP Fabian Guerrero Medina Master Web Developer

26

Algoritmo – 01 index.php

<form method="post" action="comprobar.php"> <p>Leer <input name="txt_x" type="text" > </p> <p> <input type="submit" value="Enviar"> </p></form>

Ingº CIP Fabian Guerrero Medina Master Web Developer

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("^[a-zA-Z\-_]{2,20}$", $nombre_usuario)) { return true; } else { return false; }} $vX = $_POST["txt_x"];if ( comprobar_cadena_limite($vX) ) echo ("OK");else echo ("Error");?>

Ingº CIP Fabian Guerrero Medina Master Web Developer

28

Algoritmo – 01

ereg("^[a-zA-Z\-_]{2,20}$", $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

"^[a-zA-Z0-9\-_]{2,20}$"