Upload
ing-fabian-guerrero-medina
View
67.556
Download
8
Embed Size (px)
DESCRIPTION
Seguridad en PHP con el uso de Sesiones Ing. Fabian Guerrero Medina
Citation preview
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}$"