Cómo validar que el usuario tiene permisos para ver la pagina web

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 el index.html y cuando completan e introducen la clave correcta los lleva a view.html, el problema está en que si una persona pone en la url directamente view.html, pueden ingresar sin pasar por el formulario.
Como puede hacer para si alguien conoce la URL view.html, al ingresarla en el navegador lo redirija al index.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.

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.