Me encuentro a menudo con problemas como estos:
Estoy haciendo un sistema para validar las personas que ingresan a un modulo especifico.
El sistema solicita una clave de acceso que yo les genero, por ejemplo la página del formulario es elindex.html
y cuando completan e introducen la clave correcta los lleva aview.html
, el problema está en que si una persona pone en la url directamenteview.html
, pueden ingresar sin pasar por el formulario.
Como puede hacer para si alguien conoce la URLview.html
, al ingresarla en el navegador lo redirija alindex.html
Diseñando mi sitio web con PHP, he notado algo que no es correcto. En la primera pagina, el usuario ingresas sus datos (usuario y contraseña). Luego de que es validado en la base de datos identificando que existe, se le da acceso a la pagina del menú que le permite hacer consultas a la base de datos. Al copiar la URL de la pagina donde esta el menú, note que se puede ingresar sin hacer la validación de usuario y contraseña. Entonces pensé, que pasaría si el usuaria le comparte la URL de la pagina donde esta el menú a otra persona que no tiene permisos? pues ingresará a los datos.
Está claro que si un usuario accede a un módulo para el que no tiene permisos estamos ante un problema de seguridad… al fin y al cabo, ¡es lo mismo que no haber puesto un formulario de login! (Y en tal caso al menos nos habríamos ahorrado algo de trabajo, ¿no? 🙂 )
La solución a este problema puede pensarse como la solución a dos sub-problemas:
Cómo saber si un visitante pasó antes por una página de tu sitio
Una forma de saber si un usuario ha visitado o no una página de tu sitio antes de llegar a la actual (En este caso view.html
) es utilizar algún tipo de marca.
La implementación más sencilla es utilizar el mecanismo de sesiones que provee PHP.
Al hacerlo de esta forma te garantizas que la información acompañe al visitante a lo largo de todo su recorrido.
El uso es muy simple, sólo tienes que escribir algo como:
<?php session_start(); $_SESSION['paso_por_index'] = true;
Al comienzo del archivo que responde a la URI /index.html
Cómo redireccionar a un visitante no autorizado
Luego, el archivo que quieras ocultar debe comenzar con algo como:
<?php session_start(); if (!array_key_exists('paso_por_index', $_SESSION)) { header('Location: index.html'); die; }
De esta forma, si la marca no está colocada el script entenderá que el usuario no ha pasado por index.html
al llegar a view.html
y, en consecuencia, lo redireccionará a la página inicial.
- Cómo enviarencabezados SOAP desde PHP - 09/12/2024
- Por qué PHP 8 no satisface el requisito ^7.3 de composer - 09/12/2024
- Cómo usar PHPUnit - 03/12/2024