You are on page 1of 28

FACULTAD DE INGENIERA Escuela Profesional de Ingeniera Informtica y de Sistemas

Ing CIP Fabian Guerrero Medina Master Web Developer

SEGURIDAD EN PHP USO DE SESIONES

Ing CIP Fabian Guerrero Medina Master Web Developer

Introduccin
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 informacin referente a sus transacciones.

Ing CIP Fabian Guerrero Medina Master Web Developer

Empezar una Sesin Para empezar a trabajar una sesin en PHP lo primero es iniciarla la sesin, para ello tenemos dos caminos:

1. session_start() 2. session_register(mi_var)

Ing CIP Fabian Guerrero Medina Master Web Developer

Empezar una Sesin session_start() Usaremos como ejemplo para iniciar una sesin con la funcin session_start(), esta funcin debe estar ANTES de cualquier otro cdigo.

<?php
session_start();
sentencias PHP;

?>
- Esta funcin en caso de que el visitante no tenga una sesin la crea y si ya tiene una sesin contina en ella.
Ing CIP Fabian Guerrero Medina Master Web Developer 5

Empezar una Sesin session_start()

SID (Session ID)


PHP para identificar una sesin, lo realiza a travs de un nmero SID. Esto se le proporciona al cliente para identificarse de forma exclusiva. Este SID siempre se crea al usar la funcin 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 6

ID de una Sesin session_id() Se usa para proporcionar (leer) el nmero ID de sesin que se ha inicializado. Tambin se usa esta funcin para cambiar el ID de la sesin actual.

echo ("TU ID: ". session_id() );

Ing CIP Fabian Guerrero Medina Master Web Developer

Almacenar Informacin $_SESSION Es un arreglo (matriz) asociativa que contiene las variables de sesin disponibles en la aplicacin web actual.

$_SESSION[autorizado"] = "OK"

Ing CIP Fabian Guerrero Medina Master Web Developer

Funcin: session_unset

Elimina todas la variables de la sesin.

Ing CIP Fabian Guerrero Medina Master Web Developer

Funcin: session_destroy

Destruir la sesin

Ing CIP Fabian Guerrero Medina Master Web Developer

10

Ejemplo: 01

Ing CIP Fabian Guerrero Medina Master Web Developer

11

Ejemplo: 01- index.php


<?php
session_start(); ?> <p>BIENVENIDOS</p> <form name="form1" method="post" action="pagina2.php"> <p>Nombre <input name="txt_nombre" type="text" id="txt_nombre"> Crear Variable de
Sesin

Crear Sesin

<?php $_SESSION["ESTADO"] = "OK" ?> </p> <p> <input type="submit" name="Submit" value="Enviar"> </p> </form>
Ing CIP Fabian Guerrero Medina Master Web Developer 12

Ejemplo: 01 pagina2.html
<?php session_start(); if ($_SESSION["ESTADO"] != "OK") header("Location: index.php"); ?> <?php echo ("Hola ".$_POST["txt_nombre"]); ?>

Ing CIP Fabian Guerrero Medina Master Web Developer

13

Ejemplo: 02 index.php

Ing CIP Fabian Guerrero Medina Master Web Developer

14

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 15

Ejemplo: 02 control.php
<?PHP session_start();
//vemos si el usuario y contrasea es vlido

if ($_POST["usuario"]==coquito" && $_POST["contrasena"]=="123"){


//usuario y contrasea vlidos //Crear variable para la sesin

$_SESSION["autentificado"]= 1"; $_SESSION["user"]= $_POST["usuario"]; $_SESSION["pass"]= $_POST["contrasena"]; header ("Location: aplicacion.php"); }else {
//si no existe, ir a la Pgina de Inicio

header("Location: index.php?errorusuario=si"); } ?>


Ing CIP Fabian Guerrero Medina Master Web Developer 16

Ejemplo: 02 aplicacion.php
<?PHP include ("seguridad.php");?> <html> <head> <title>Aplicacin 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 17

Ejemplo: 02 seguridad.php

<?PHP
//Inicio la sesin

session_start();
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO

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

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

exit(); } ?>

Ing CIP Fabian Guerrero Medina Master Web Developer

18

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 19

Ejemplo: 02 salir.php
<?PHP session_start(); session_destroy(); ?> <html> <head> <title>Fin de Sesin</title> </head>
<body> Gracias por tu acceso <br><br> <a href="index.php">Ir a la Pgina de Inicio</a>

</body>
</html>
Ing CIP Fabian Guerrero Medina Master Web Developer 20

Ejemplo: 02
Ingreso de Datos
Validar Datos y Crear Variables de Sesion Pgina Segura

Home Page
Datos Errneos

Datos OK

index.php

control.php

aplicacion.php

Pgina Segura

seguridad.php otra.php Ing CIP Fabian Guerrero Medina Master Web Developer salir.php 21

Ing CIP Fabian Guerrero Medina Master Web Developer

22

Redireccionar header()

Cabecera "Location:"

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


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

Ing CIP Fabian Guerrero Medina Master Web Developer

23

Reutilizar Cdigo include()

Permite reutilizar porciones de cdigo (script, o simple html) cuantas veces quieras. Es decir pega el cdigo en donde es llamado.

Ing CIP Fabian Guerrero Medina Master Web Developer

24

Ing CIP Fabian Guerrero Medina Master Web Developer

25

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 26

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 27

Algoritmo 01
Funcin EREG: ejecuta el matching de una expresin regular.

ereg("^[a-zA-Z\-_]{2,20}$", $nombre_usuario)
Variable a Evualar Termino de Cadena

Rango 2..20 de caracteres permitidos


Permitir estos caracteres especiales Permitir solo letras

"^[a-zA-Z0-9\-_]{2,20}$"
Ing CIP Fabian Guerrero Medina Master Web Developer 28

You might also like