Foros del Web » Programando para Internet » PHP »

Como puedo mejora la seguridad de esto?

Estas en el tema de Como puedo mejora la seguridad de esto? en el foro de PHP en Foros del Web. Hola que tal, tengo el siguiente problema de seguridad, al logearse un usuario, aparece un link para que se habra un pagina que muestra un ...
  #1 (permalink)  
Antiguo 11/04/2008, 12:16
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Exclamación Como puedo mejora la seguridad de esto?

Hola que tal, tengo el siguiente problema de seguridad, al logearse un usuario, aparece un link para que se habra un pagina que muestra un detalle con sus datos.

y en el navegador se ve asi:

Código HTML:
http://localhost/sitio20%de20%prueba/detalleuser.php?recordID=31
el problema es que si a alguien se le ocurre cambiar la parte "recordID=31", por recordID=32, veria los datos del usuario con la id numero 32 o la de cualquiera!.

El asunto es que en esa pagina existe la posibilidad de modificar los datos del usuario, asi que alguien podria poner cualquier cosa.

Como se puede evitar eso?
  #2 (permalink)  
Antiguo 11/04/2008, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Como puedo mejora la seguridad de esto?

Hola Ruben_C

Usa sesiones para guardar el id del usuario en la sesión y así no lo pasas vía GET.

Saludos.
  #3 (permalink)  
Antiguo 11/04/2008, 12:41
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Como puedo mejora la seguridad de esto?

Mira, este es el codigo con el que paso la variable

Código PHP:
<?php 
require_once('Connections/registro.php');
mysql_select_db($database_registro$registro);

if (isset(
$_SESSION['MM_Username'])){


 
session_start();
 
 
$login=$_SESSION['MM_Username'];
 
if (isset(
$login)) 
$sql=mysql_query("SELECT*FROM registro WHERE usuario='".$login."'"$registro);?>
<?php  
while ($row mysql_fetch_assoc($sql))  { ?>
    
      Bienvenido a blmi sitio! has ingresado como <?php echo $row['nombre']; ?>, para ver tus datos personales, pulsa<a target="_parent" href="detalleuser.php?recordID=<?php echo $row['$login']; ?>">aqui</a>
      
    <?php }?>
Y esta la pagina detalleuser.php

Código PHP:
<?php mysql_select_db($database_registro$registro);
if (isset(
$_GET['recordID'])) {
    
$colname_detalle $_GET['recordID'];
}  

?>

<table width="530" border="0">
<?php $sql=mysql_query("SELECT * FROM registro WHERE id='".$colname_detalle."'",$registro);?>
<?php 
while ($row mysql_fetch_array($sql)) { ?>
  <tr>
pero si pongo $_SESSION, en vez de get, no me aparece nada. aun definiendola recordID como variable de $_sesion en pagina usuario

como seria entonces?

Última edición por Ruben_C; 11/04/2008 a las 13:01
  #4 (permalink)  
Antiguo 11/04/2008, 13:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Como puedo mejora la seguridad de esto?

Nadie?, solo una idea!!!, lo de las sesiones no supe hacerlo, porque no pude pasar la variable record id usandolas, por eso ocupe get.

plis, no soy bueno en php
  #5 (permalink)  
Antiguo 11/04/2008, 13:34
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Re: Como puedo mejora la seguridad de esto?

Hola
En primer lugar deberías ordenar mejor tu código, si no se hace dificil seguir lo que haces

En al página donde de loguea tienes que crear una variable de session mas
Código PHP:
<?
if (isset($login)) 
$sql=mysql_query("SELECT*FROM registro WHERE usuario='".$login."'"$registro);?>
<?php  
while ($row mysql_fetch_assoc($sql))  { 
$_SESSION["user_id"]=$row['tu_user_id'];
?>
    
      Bienvenido a blmi sitio! has ingresado como <?php echo $row['nombre']; ?>, para ver tus datos personales, pulsa<a target="_parent" href="detalleuser.php?recordID=<?php echo $row['$login']; ?>">aqui</a>
      
    <?php }?>
y en detalleuser.php
Código PHP:
<?
session_start
(); 

if(
$_SESSION["user_id"] != $_GET['recordID']){
 
header("Location: /tu_pagina_de_login ");
}


php mysql_select_db($database_registro$registro);
if (isset(
$_GET['recordID'])) {
    
$colname_detalle $_GET['recordID'];
}  

?>

<table width="530" border="0">
<?php $sql=mysql_query("SELECT * FROM registro WHERE id='".$colname_detalle."'",$registro);?>
<?php 
while ($row mysql_fetch_array($sql)) { ?>
  <tr>

Última edición por Genetix; 11/04/2008 a las 15:04
  #6 (permalink)  
Antiguo 11/04/2008, 14:08
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Re: Como puedo mejora la seguridad de esto?

ovbiamente que tenes que poner
Código PHP:
session_start(); 
al principio de cada pagina que vallas a usar con sesiones
  #7 (permalink)  
Antiguo 11/04/2008, 15:44
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Como puedo mejora la seguridad de esto?

Gracias gracias por sus respuesta, ahora anda todo filete
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:50.