Pregunta:
Fecha: 14-01-2019 08:59:28
(En Español)
proceso.php
El codigo funciona perfectamente alli no esta el problema. El problema se presenta cuando yo me loggue como usuario B voy a dejar un ejemplo bastante claro
si usuario A se logguea entra al menu www.miempresa.com
si usuario B se logguea entra al menu www.miempresa2.com
aqui esta el problema si yo me loggue como usuario B voy a entrar a la url www.miempresa2.com y si edito la url y borro el 2 automaticamente entraria al menu de Usuario A lo cual no deberia ser porque usuario A tiene el codigo de verificacion que dice
este codigo de verificacion solo me ayuda a verificar si la sesion iniciada esta en el grupo A si no me manda al intro,
yo se que muchos diran pero cambia el nombre del archivo seria una solucion pero igual podrian acceder sabiendo el nombre de los 2 archivos mi inquietud es evitar que de una sesion a otra salten y les permita acceder
formulo mi pregunta nuevamente como evitar que los usuarios de session B se pasen al menu de sesion A al editar la URL
GRACIAS QUEDO ATENTO A SUS RESPUESTAS Votos: 0 - Respuestas: 5 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
Evitar que Usuarios de Session B puedan Acceder a archivos se Session A por URL[No resuelta]
Hola tengo un problemita de seguridad en php cree un codigo de ingreso que segun el usuario que se loggue me llevara a un menu A o un menu B es esteproceso.php
<?php
session_start();
$usuario=$_POST['usuario'];
$clave= ($_POST['clave']);
$_SESSION['usuario']=$usuario;
include("conexion.php");
$proceso = $conexion->query("SELECT * FROM users WHERE user='$usuario' AND clave='$clave' ");
if( $resultado = mysqli_fetch_array($proceso)){
if ($resultado['grupo'] == 'A') {
$_SESSION['grupo'] = $resultado['grupo'];
header("location:miempresa.php");
}
if ($resultado['grupo'] == 'B') {
$_SESSION['grupo'] =$resultado['grupo'];
header("location:menunort");
}
if ($resultado['grupo'] == 'C') {
$_SESSION['grupo'] =$resultado['grupo'];
header("location:miempresa2.php");
}
if ($resultado['grupo'] == null) {
echo "Usuario no esta en ningun grupo";
}
}
else{
echo "Usuario o Contraseña incorrecta";
}
?>
El codigo funciona perfectamente alli no esta el problema. El problema se presenta cuando yo me loggue como usuario B voy a dejar un ejemplo bastante claro
si usuario A se logguea entra al menu www.miempresa.com
si usuario B se logguea entra al menu www.miempresa2.com
aqui esta el problema si yo me loggue como usuario B voy a entrar a la url www.miempresa2.com y si edito la url y borro el 2 automaticamente entraria al menu de Usuario A lo cual no deberia ser porque usuario A tiene el codigo de verificacion que dice
<?php
session_start();
if(isset($_SESSION['grupo'])){
}
else{
header("location:intro");
}
?>
este codigo de verificacion solo me ayuda a verificar si la sesion iniciada esta en el grupo A si no me manda al intro,
yo se que muchos diran pero cambia el nombre del archivo seria una solucion pero igual podrian acceder sabiendo el nombre de los 2 archivos mi inquietud es evitar que de una sesion a otra salten y les permita acceder
formulo mi pregunta nuevamente como evitar que los usuarios de session B se pasen al menu de sesion A al editar la URL
GRACIAS QUEDO ATENTO A SUS RESPUESTAS Votos: 0 - Respuestas: 5 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 14-01-2019 11:29:01 Hola ya intentó agregando session_name("nombre-de-sesion); ?
Quedaría algo así:
<?php session_name('nombre-de-sesion'); session_start(); //el resto del código ?>
Ese session_name() debe colocarlo simpre donde aparesca session_start(), antes de este. Votos: 0 - Link respuesta -
Fecha: 15-01-2019 04:26:54 Buen Día.
Creo que tenes varias opciones, tal vez puedas crear una tabla donde esten las distintas partes de tu sitio, y relacionarla con los grupos en una tercer tabla donde esteen los permisos, en esa tabla permisos podrias poner si el grupo X tiene acceso a la seccion X mediante un valor 0 y 1.
Deberias guardar en el inicio de session a que grupo pertenece el usuario que esta haciendo login y al principio de cada seccion del sitio validar si el usuario X con el grupo X tiene permisos para acceder ahi, caso contrario que lo redirija.
Tabla grupos
id, nombreGrupo
Tabla grupo_permiso
idGrupo, idSeccion, acceso
Tabla secciones
id, nombreSeccion
Ej:
tbl grupo_permiso
1 , 1 , 1 -> El grupo 1 podria entrar a la seccion 1
2 , 1 , 0 -> El grupo 2 No podria entrar a la seccion 1
3 , 1 , 1 -> El grupo 3 Podria entrar a la seccion 1
Y al comienzo de la seccion del sitio haces una validacion contra esta tabla grupo_permiso
Si no quieres hacer algo dinamico con tablas podrias validar al principio de la seccion X mediante una variable que corresponda al grupo autorizado y compararla con el grupo al cual pertenece el usuario que llego hasta ahi, ese valor lo podrias recuperar desde la variable de session que guardaste.
if($_SESSION['grupo'] != 'A') {
header('location:home');
}
Es lo que se me ocurre podrias hacer, aclaro que soy un aprendiz, espero no haberte confundido.
saludos. Votos: 1 - Link respuesta -
Fecha: 15-01-2019 06:51:31 Yerlin
Buenas tardes
Por lo que leo en tu script y disculpa si leo mal, te esta faltando algo:
Si recibes un SESSION:
<?php session_start(); if(isset($_SESSION['grupo'])){ } else{ header("location:intro"); } ?>
Te esta faltando una parte ... ¿Que hacer con la variable que recibis?
Por ejemplo:
<?php if(!isset($_SESSION['grupo'])){ echo "FUERA"; }else{ $x_grupo = $_SESSION['grupo']; $users = mysqli_query($con, "SELECT * FROM users WHERE algo = '$x_grupo' "); while($row = mysqli_fetch_assoc($usu)){ // algo es el campo que contiene el registro de cada usuario A, B o C, segun corresponda $algo = $row['algo']; }}
Entonces, aqui si la session responde al grupo indicado, accese a este sector, caso contrario, no
Un saludo Votos: 1 - Link respuesta -
Fecha: 16-01-2019 02:22:02 yo tengo uno que te pueda servir
if(isset($_SESSION['usuario'])){
if($_SESSION['usuario']['perfil'] != "administrador"){
header("Location: ../usuario/");
}
}else {
header('Location : ../');
}
?>
pon eso en cada archivo que corresponda al tipo de usuario
yo lo uso y va bien Votos: 1 - Link respuesta -
Fecha: 18-01-2019 04:12:38 Bueno lo que yo hago en los sistemas que realizo que tienen multiples tipos de menu es cargar el menu de acuerdo al tipo de usuario al igual que valido por medio de permisos o grupos de usuarios el acceso a las áreas y asi evito el qcceso no autorizado por url, por ejemplo:
Donde se supone va el menu:
switch($_SESSION['nivel']){ case 'admin': include('menu_a.php'); break; case 'usuario': include('menu_b.php'); break; }
En los distintos módulos manejo el grupo de usuarios que puede accceder:
if($_SESSION['group_type'] != 'group_a'){ header('location:home.php'); exit; }
y si varios grupos tienen acceso a un modulo determinado, lo valido así:
if(!in_array($_SESSION['group_type'],['group_a','group_c']) ){ header('location:home.php'); exit; }
De esta manera evitarías en algo el acceso no autorizado a zonas de tu sistema por url, ya que esto valida si el usuario tiene o no acceso a dicho modulo, no vale de nada que cambie la url pues el sistema me rebotará al detectar que no tengo acceso a esa sección, esto aplica también a sesiones de un modulo.
Lo que no entiendo es el asunto de las URLs diferentes por cada tipo de usuario, pero bueno.
Espero te sirva. Votos: 1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
