sesiones en php

28
Ingº CIP Fabian Guerrero Medina Master Web De veloper 1 FACULTAD DE INGENIERÍA Escuela Profesional de Ingeniería Informática y de Sistemas

Upload: ing-fabian-guerrero-medina

Post on 18-Dec-2014

67.558 views

Category:

Technology


8 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 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

Page 2: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

2

SEGURIDAD EN PHP USO DE SESIONESSEGURIDAD EN PHP USO DE SESIONES

Page 3: Sesiones en  Php

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.

Page 4: Sesiones en  Php

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’)

Page 5: Sesiones en  Php

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.

Page 6: Sesiones en  Php

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.

Page 7: Sesiones en  Php

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() );

Page 8: Sesiones en  Php

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"

Page 9: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

9

Función: session_unset

Elimina todas la variables de la sesión.

Page 10: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

10

Función: session_destroy

Destruir la sesión

Page 11: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

11

Ejemplo: 01

Page 12: Sesiones en  Php

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

Page 13: Sesiones en  Php

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"]);

?>

Page 14: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

14

Ejemplo: 02 – index.php

Page 15: Sesiones en  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>

Page 16: Sesiones en  Php

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");

}?>

Page 17: Sesiones en  Php

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>

Page 18: Sesiones en  Php

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();}?>

Page 19: Sesiones en  Php

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>

Page 20: Sesiones en  Php

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>

Page 21: Sesiones en  Php

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

Page 22: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

22

Page 23: Sesiones en  Php

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");

Page 24: Sesiones en  Php

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.

Page 25: Sesiones en  Php

Ingº CIP Fabian Guerrero Medina Master Web Developer

25

Page 26: Sesiones en  Php

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>

Page 27: Sesiones en  Php

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");?>

Page 28: Sesiones en  Php

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}$"