SlideShare une entreprise Scribd logo
1  sur  17
implementar la seguridad en el acceso a datos usando PHP
Descripción de las distintas páginas que forman el sistema de autentificación y su funcionamiento, basado en usuario y contraseña. Un sistema de autentificación es un módulo de seguridad para asegurarnos de que el usuario que visita las páginas es quien dice ser. Por supuesto, sabiendo que ese usuario es conocido, podremos darle acceso a más aspectos de la página que si fuese un usuario desconocido. Pero supongo que, si estás leyendo este artículo, ya conocerás lo que es un sistema de autentificación y lo que deseas hacer es crear uno para tus páginas.
Esquema de un sistema de autentificación Vamos a empezar por definir un diagrama para realizar la autentificación de usuario en unas páginas web, que nos servirá para programar luego las páginas ajustándose al diagrama
Los datos de autentificación (usuario y contraseña escritos en la página inicial) se envían a la página dibujada con línea de puntos, que se encarga de hacer una comprobación de dichos datos del usuario. La aplicación de acceso restringido, aparte de mostrar las funcionalidades que queríamos proteger con usuario contraseña, debe de realizar unas comprobaciones de seguridad para saber si se ha pasado con éxito el proceso de autentificación o si se está intentando acceder de manera no permitida a esa página.
Página que muestra el formulario donde el visitante debe introducir su nombre de usuario y contraseña, necesarios para acceder a la aplicación segura. 				Para realizar esta página, utilizaremos HTML básico, excepto en una comprobación que nos permitirá saber si se accede al formulario de nuevo por no haber introducido correctamente el usuario y contraseña, pues, en ese caso, habría que mostrar un cartelito informando que el usuario o la contraseña no son válidos.
El código sería el siguiente: <html> <head> <title>Autentificación PHP</title> </head> <body> <h1>Autentificación PHP</h1> <formaction="control.php" method="POST"> <tablealign="center" width="225" cellspacing="2" cellpadding="2" border="0"> <tr> <tdcolspan="2" align="center" <?if ($_GET["errorusuario"]=="si"){?> bgcolor=red><spanstyle="color:ffffff"><b>Datos incorrectos</b></span> <?}else{?> bgcolor=#cccccc>Introduce tu clave de acceso <?}?></td> </tr> <tr> <tdalign="right">USER:</td> <td><input type="Text" name="usuario" size="8" maxlength="50"></td> </tr> <tr> <tdalign="right">PASSWD:</td> <td><input type="password" name="contrasena" size="8" maxlength="50"></td> </tr> <tr> <tdcolspan="2" align="center"><input type="Submit" value="ENTRAR"></td> </tr> </table> </form> </body> </html>
Control de datos con el formulario de autentificación en PHP 			Después de la comprobación podrán pasar dos cosas: Si los datos son correctos, definirá una variables de sesión que servirá para saber que ese visitante ha sido validado correctamente y tiene permiso para acceder a la aplicación. Además re direccionará al visitante a la página de la aplicación restringida. Si el usuario/contraseña no era correcto, se envía al navegador a la página de inicio pasando la variable error usuario=si, que indica que ha habido un error en la autentificación. El código se puede ver a continuación:
<? //vemos si el usuario y contraseña es váildoif ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){     //usuario y contraseña válidos     //defino una sesion y guardo datos     session_start();     $_SESSION["autentificado"]= "SI";     header ("Location: aplicacion.php"); }else {     //si no existe le mando otra vez a la portada     header("Location: index.php?errorusuario=si"); } ?>
Capa de seguridad. 			Este archivo, en nuestro caso llamado seguridad.php, se encargará de dotar seguridad a toda la aplicación de acceso restringido. La técnica que vamos a utilizar es incluirlo al principio de todas las páginas que queramos que permitan un acceso restringido. El módulo de seguridad, incluido al principio de cada archivo, realizará las comprobaciones oportunas y actuará permitiendo ver el archivo o denegando su visualización dependiendo de dichas comprobaciones.
<? //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO if ($_SESSION["autentificado"] != "SI") {     //si no existe, envio a la página de autentificacion    header("Location: index.php");     //ademas salgo de este script     exit(); } ?>
Archivos de la aplicación con acceso restringido en PHP. 	Mostraremos un ejemplo del código de una de las páginas web que formaría la aplicación segura. 			La aplicación con acceso restringido se realizará como cualquier otra aplicación de PHP, con la salvedad de que, a todos los archivos que queramos proteger, habrá que incluirles al principio la capa de seguridad, representada por el archivo seguridad.php.
<?include ("seguridad.php");?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Si estás aquí es que te has autentificado</h1> <br> ---- <br> Aplicación segura <br> ---- <br> <br> <a href="salir.php">Salir</a> </body> </html>
Salir de la aplicación segura en PHP 				La seguridad de la aplicación se basa en la definición de unas variables de sesión que se consultan en cada página segura. Puede ocurrir que el usuario entre en la aplicación e inicie una sesión y que se marche de la aplicación segura sin cerrar la sesión, con lo que quedaría abierta para que cualquier otra persona pueda acceder a la aplicación volviendo por el historial de páginas del navegador.
	El archivo en concreto lo único que hace es terminar la sesión asociada a su acceso. Podemos ver el código a continuación. <? session_start(); session_destroy(); ?> <html> <head> <title>Has salido!!</title> </head> <body> Gracias por tu acceso <br> <br> <a href="index.php">Formulario de autentificación</a> </body> </html>
Diferentes forma de cerras sesión en PHP 	Cómo cerrar una sesión autenticada correctamente, por inactividad o por cierre del navegador por parte del usuario. 	Veremos como cerrar la sesión del usuario cuando:  El tiempo de inactividad del usuario supere "x" cantidad de tiempo (segundos, minutos, etc...).  El usuario cierre el navegador y abandone por completo nuestro sitio.
Cierre de sesión por inactividad en PHP: módulo de control de datos 	Ahora veremos que tan sencillo es. Solo tendremos que: Crear una nueva sesión que guarde una fecha y hora  Comprobar en nuestra capa de seguridad el tiempo transcurrido entre la sesión guardada y la hora actual  Actualizar la sesión o destruirla según corresponda
Esto lo haremos en el momento que el usuario ingresa al sistema con sus datos de acceso.  <? //vemos si el usuario y contraseña es váildoif ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){     //usuario y contraseña válidos     session_name("loginUsuario");     //asigno un nombre a la sesión para poder guardar diferentes datos    session_start();     // inicio la sesión     $_SESSION["autentificado"]= "SI";     //defino la sesión que demuestra que el usuario está autorizado     $_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");     //defino la fecha y hora de inicio de sesión en formato aaaa-mm-ddhh:mm:ss    header ("Location: aplicacion.php"); }else {     //si no existe le mando otra vez a la portada     header("Location: index.php?errorusuario=si"); } ?>

Contenu connexe

Similaire à Implementar la seguridad en el acceso a datos

Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536xib32
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpJess_ccs_rock
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpJess_ccs_rock
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Esteban Saavedra
 
Google Analitycs para las webs de los campings
Google Analitycs para las webs de los campingsGoogle Analitycs para las webs de los campings
Google Analitycs para las webs de los campingsLe Metayer Deckx William
 
Introducción a ASP.NET
Introducción a ASP.NETIntroducción a ASP.NET
Introducción a ASP.NETpabloesp
 
Trabajando con sesiones en PHP
Trabajando con sesiones en PHPTrabajando con sesiones en PHP
Trabajando con sesiones en PHPEliot Ramos
 
Especialista Web J13: Introducción a Asp.Net
Especialista Web J13: Introducción a Asp.NetEspecialista Web J13: Introducción a Asp.Net
Especialista Web J13: Introducción a Asp.NetMoisés Cid Deza
 
Potencia Tu Sitio Web De La Mano De Internet Explorer 8
Potencia Tu Sitio Web De La Mano De Internet Explorer 8Potencia Tu Sitio Web De La Mano De Internet Explorer 8
Potencia Tu Sitio Web De La Mano De Internet Explorer 8Andrés Iturralde
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Acegi Security System for Spring
Acegi Security System for SpringAcegi Security System for Spring
Acegi Security System for SpringCarlos Sanchez
 
Portal cautivo usando Easy Hotspot
Portal cautivo usando Easy HotspotPortal cautivo usando Easy Hotspot
Portal cautivo usando Easy HotspotCésar Lorenzo
 

Similaire à Implementar la seguridad en el acceso a datos (20)

Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536
 
Sesiones en Php
Sesiones en  PhpSesiones en  Php
Sesiones en Php
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en php
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en php
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Google Analitycs para las webs de los campings
Google Analitycs para las webs de los campingsGoogle Analitycs para las webs de los campings
Google Analitycs para las webs de los campings
 
Introducción a ASP.NET
Introducción a ASP.NETIntroducción a ASP.NET
Introducción a ASP.NET
 
Seguridad en PHP (es)
Seguridad en PHP (es)Seguridad en PHP (es)
Seguridad en PHP (es)
 
Trabajando con sesiones en PHP
Trabajando con sesiones en PHPTrabajando con sesiones en PHP
Trabajando con sesiones en PHP
 
Especialista Web J13: Introducción a Asp.Net
Especialista Web J13: Introducción a Asp.NetEspecialista Web J13: Introducción a Asp.Net
Especialista Web J13: Introducción a Asp.Net
 
Potencia Tu Sitio Web De La Mano De Internet Explorer 8
Potencia Tu Sitio Web De La Mano De Internet Explorer 8Potencia Tu Sitio Web De La Mano De Internet Explorer 8
Potencia Tu Sitio Web De La Mano De Internet Explorer 8
 
PHP
PHPPHP
PHP
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
PHP
PHPPHP
PHP
 
Html investigacion
Html investigacionHtml investigacion
Html investigacion
 
Html investigacion
Html investigacionHtml investigacion
Html investigacion
 
Acegi Security System for Spring
Acegi Security System for SpringAcegi Security System for Spring
Acegi Security System for Spring
 
Portal cautivo usando Easy Hotspot
Portal cautivo usando Easy HotspotPortal cautivo usando Easy Hotspot
Portal cautivo usando Easy Hotspot
 
Robo desesionesfinal
Robo desesionesfinalRobo desesionesfinal
Robo desesionesfinal
 

Plus de Helmilpa

El sistema operativo reactOs
El sistema operativo reactOsEl sistema operativo reactOs
El sistema operativo reactOsHelmilpa
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
La enseñanza por el sistema modular metropolitano
La enseñanza por el sistema modular   metropolitanoLa enseñanza por el sistema modular   metropolitano
La enseñanza por el sistema modular metropolitanoHelmilpa
 
Microprocesadores
MicroprocesadoresMicroprocesadores
MicroprocesadoresHelmilpa
 

Plus de Helmilpa (6)

Captcha
CaptchaCaptcha
Captcha
 
El sistema operativo reactOs
El sistema operativo reactOsEl sistema operativo reactOs
El sistema operativo reactOs
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
La enseñanza por el sistema modular metropolitano
La enseñanza por el sistema modular   metropolitanoLa enseñanza por el sistema modular   metropolitano
La enseñanza por el sistema modular metropolitano
 
Korakora
KorakoraKorakora
Korakora
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 

Dernier

INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 

Dernier (20)

INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 

Implementar la seguridad en el acceso a datos

  • 1. implementar la seguridad en el acceso a datos usando PHP
  • 2. Descripción de las distintas páginas que forman el sistema de autentificación y su funcionamiento, basado en usuario y contraseña. Un sistema de autentificación es un módulo de seguridad para asegurarnos de que el usuario que visita las páginas es quien dice ser. Por supuesto, sabiendo que ese usuario es conocido, podremos darle acceso a más aspectos de la página que si fuese un usuario desconocido. Pero supongo que, si estás leyendo este artículo, ya conocerás lo que es un sistema de autentificación y lo que deseas hacer es crear uno para tus páginas.
  • 3. Esquema de un sistema de autentificación Vamos a empezar por definir un diagrama para realizar la autentificación de usuario en unas páginas web, que nos servirá para programar luego las páginas ajustándose al diagrama
  • 4. Los datos de autentificación (usuario y contraseña escritos en la página inicial) se envían a la página dibujada con línea de puntos, que se encarga de hacer una comprobación de dichos datos del usuario. La aplicación de acceso restringido, aparte de mostrar las funcionalidades que queríamos proteger con usuario contraseña, debe de realizar unas comprobaciones de seguridad para saber si se ha pasado con éxito el proceso de autentificación o si se está intentando acceder de manera no permitida a esa página.
  • 5. Página que muestra el formulario donde el visitante debe introducir su nombre de usuario y contraseña, necesarios para acceder a la aplicación segura. Para realizar esta página, utilizaremos HTML básico, excepto en una comprobación que nos permitirá saber si se accede al formulario de nuevo por no haber introducido correctamente el usuario y contraseña, pues, en ese caso, habría que mostrar un cartelito informando que el usuario o la contraseña no son válidos.
  • 6. El código sería el siguiente: <html> <head> <title>Autentificación PHP</title> </head> <body> <h1>Autentificación PHP</h1> <formaction="control.php" method="POST"> <tablealign="center" width="225" cellspacing="2" cellpadding="2" border="0"> <tr> <tdcolspan="2" align="center" <?if ($_GET["errorusuario"]=="si"){?> bgcolor=red><spanstyle="color:ffffff"><b>Datos incorrectos</b></span> <?}else{?> bgcolor=#cccccc>Introduce tu clave de acceso <?}?></td> </tr> <tr> <tdalign="right">USER:</td> <td><input type="Text" name="usuario" size="8" maxlength="50"></td> </tr> <tr> <tdalign="right">PASSWD:</td> <td><input type="password" name="contrasena" size="8" maxlength="50"></td> </tr> <tr> <tdcolspan="2" align="center"><input type="Submit" value="ENTRAR"></td> </tr> </table> </form> </body> </html>
  • 7. Control de datos con el formulario de autentificación en PHP Después de la comprobación podrán pasar dos cosas: Si los datos son correctos, definirá una variables de sesión que servirá para saber que ese visitante ha sido validado correctamente y tiene permiso para acceder a la aplicación. Además re direccionará al visitante a la página de la aplicación restringida. Si el usuario/contraseña no era correcto, se envía al navegador a la página de inicio pasando la variable error usuario=si, que indica que ha habido un error en la autentificación. El código se puede ver a continuación:
  • 8. <? //vemos si el usuario y contraseña es váildoif ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){     //usuario y contraseña válidos     //defino una sesion y guardo datos     session_start();     $_SESSION["autentificado"]= "SI";     header ("Location: aplicacion.php"); }else {     //si no existe le mando otra vez a la portada     header("Location: index.php?errorusuario=si"); } ?>
  • 9. Capa de seguridad. Este archivo, en nuestro caso llamado seguridad.php, se encargará de dotar seguridad a toda la aplicación de acceso restringido. La técnica que vamos a utilizar es incluirlo al principio de todas las páginas que queramos que permitan un acceso restringido. El módulo de seguridad, incluido al principio de cada archivo, realizará las comprobaciones oportunas y actuará permitiendo ver el archivo o denegando su visualización dependiendo de dichas comprobaciones.
  • 10. <? //Inicio la sesión session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO if ($_SESSION["autentificado"] != "SI") {     //si no existe, envio a la página de autentificacion    header("Location: index.php");     //ademas salgo de este script     exit(); } ?>
  • 11. Archivos de la aplicación con acceso restringido en PHP. Mostraremos un ejemplo del código de una de las páginas web que formaría la aplicación segura. La aplicación con acceso restringido se realizará como cualquier otra aplicación de PHP, con la salvedad de que, a todos los archivos que queramos proteger, habrá que incluirles al principio la capa de seguridad, representada por el archivo seguridad.php.
  • 12. <?include ("seguridad.php");?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Si estás aquí es que te has autentificado</h1> <br> ---- <br> Aplicación segura <br> ---- <br> <br> <a href="salir.php">Salir</a> </body> </html>
  • 13. Salir de la aplicación segura en PHP La seguridad de la aplicación se basa en la definición de unas variables de sesión que se consultan en cada página segura. Puede ocurrir que el usuario entre en la aplicación e inicie una sesión y que se marche de la aplicación segura sin cerrar la sesión, con lo que quedaría abierta para que cualquier otra persona pueda acceder a la aplicación volviendo por el historial de páginas del navegador.
  • 14. El archivo en concreto lo único que hace es terminar la sesión asociada a su acceso. Podemos ver el código a continuación. <? session_start(); session_destroy(); ?> <html> <head> <title>Has salido!!</title> </head> <body> Gracias por tu acceso <br> <br> <a href="index.php">Formulario de autentificación</a> </body> </html>
  • 15. Diferentes forma de cerras sesión en PHP Cómo cerrar una sesión autenticada correctamente, por inactividad o por cierre del navegador por parte del usuario. Veremos como cerrar la sesión del usuario cuando: El tiempo de inactividad del usuario supere "x" cantidad de tiempo (segundos, minutos, etc...). El usuario cierre el navegador y abandone por completo nuestro sitio.
  • 16. Cierre de sesión por inactividad en PHP: módulo de control de datos Ahora veremos que tan sencillo es. Solo tendremos que: Crear una nueva sesión que guarde una fecha y hora Comprobar en nuestra capa de seguridad el tiempo transcurrido entre la sesión guardada y la hora actual Actualizar la sesión o destruirla según corresponda
  • 17. Esto lo haremos en el momento que el usuario ingresa al sistema con sus datos de acceso. <? //vemos si el usuario y contraseña es váildoif ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){     //usuario y contraseña válidos     session_name("loginUsuario");     //asigno un nombre a la sesión para poder guardar diferentes datos    session_start();     // inicio la sesión     $_SESSION["autentificado"]= "SI";     //defino la sesión que demuestra que el usuario está autorizado     $_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");     //defino la fecha y hora de inicio de sesión en formato aaaa-mm-ddhh:mm:ss    header ("Location: aplicacion.php"); }else {     //si no existe le mando otra vez a la portada     header("Location: index.php?errorusuario=si"); } ?>