Foros del Web » Programando para Internet » PHP »

Problemas seguridad url

Estas en el tema de Problemas seguridad url en el foro de PHP en Foros del Web. Hola chicos, vengo a pedirles ayuda con este problema de seguridad que no se me ocurre como solucionarlo de buena forma. Tengo un motor y ...
  #1 (permalink)  
Antiguo 28/01/2013, 01:43
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 7 años, 4 meses
Puntos: 0
Pregunta Problemas seguridad url

Hola chicos, vengo a pedirles ayuda con este problema de seguridad que no se me ocurre como solucionarlo de buena forma.

Tengo un motor y en este las personas pueden subir fotografias, y tambien borrarlas.
El problema es que al borrarlas, cargo un while con todas las fotos subidas por el usuario filtrando por su correo, y luego el elije cual desea borrar.

El problema es que la url al intentar borrar la foto queda con ../mis-progresos-eliminar.php?imagen_id=22

y con esto si el usuario cambia el id de manera manual, puede borrar la imagen que sea.

Adjunto el codigo para ver si me pueden ayudar saludos-


Codigo que carga los datos de las fotos ingresadas

Código:
<table id="tabla-registros">
			<tr>
			   <td>NOMBRE</td>
			   <td></td>
		       </tr>
		    <?php
			/** conexion ***************************/
			// conectamos a la base de datos
			session_start(); 
			include('../acceso_db.php');
			/** fin conexion ************************/
			$usuario=$_SESSION['email'];
			// del registro a actualizar
			// hacemos una consulta
			// para mostrar los datos
			// hacemos una consulta
			// para mostrar los registros
			    $sql = mysql_query("SELECT imagen_id, imagen FROM imagenes WHERE email='$usuario'") or die(mysql_error());
				// mostramos los registros
				while($row = mysql_fetch_array($sql))
				{?>
				<tr class="campos-tabla">
				    <?php echo "<td>".$row['imagen']."</td>"."<td>"."<a class='actualizar-clientes' href='mis-progresos-eliminar.php?imagen_id=$row[imagen_id]'>Eliminar</a>"."\n"?>
				</tr>
				<?php
			    }
		    ?>
		    
		    </table>
Codigo para borrar la imagen:

Código:
<?php
                        include('../acceso_db_actualizar.php'); 
                        // comprovamos si
                        // ha sido enviado el formulario
                        if(isset($_POST['eliminar']) && $_POST['eliminar'] == 'Eliminar'){
                        // creamos la consulta
                        // que eliminara el registro
                        // que viene via $_POST
                        $id_eliminar = $_POST['imagen_id'];
                        $sqlEliminar = mysql_query("DELETE FROM imagenes WHERE imagen_id = $id_eliminar", $link)
                        or die(mysql_error());
                        // enviamos un mensage de exito
                        $mensaje =  "<p class='mensaje-eliminado'>El registro a sido eliminado</p> <a href='mis-progresos-registros.php'>Ver más registros</a>";
			
			
                        }
                        // si no ha sido enviado el formulario aun
                        // recogemos el ID
                        // del registro a eliminar
                        // via $_GET
                        elseif(isset($_GET['imagen_id'])){
                        $id = $_GET['imagen_id'];
                        // hacemos una consulta
                        // para mostrar el registro
                        // que vamos a eliminar
                        $sql = mysql_query("SELECT * FROM imagenes WHERE imagen_id = $id", $link)
                        or die(mysql_error());
                        $row = mysql_fetch_array($sql);
                        // advertimos
                        $mensaje =  "<p class='mensaje-eliminar'>¿Está seguro que quiere eliminar la fotografía <b>$row[imagen]</b>?<p>";
                        }
                        // mostramos el mensage
                        echo $mensaje;
			
                    ?>
                    <!-- creamos el formulario HTML
                    que enviara el ID
                    del registro a eliminar  -->
		    
                    <form name="eliminar-registro" method="post" action="<?php $_SERVER['PHP_SELF']; ?>" >
			<input name="imagen_id" type="hidden" value="<?php echo $row['imagen_id']; ?>" />
			<input class="boton-actualizar" name="eliminar" type="submit" value="Eliminar" />
                    </form>
De antemano muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 28/01/2013, 01:47
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.329
Antigüedad: 11 años, 10 meses
Puntos: 606
Respuesta: Problemas seguridad url

Envia el parámetro por Post en lugar de pasarlo por Get en la querystring. Se podría hacer pero ya sería algo más complicado.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 28/01/2013, 11:09
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Problemas seguridad url

pero como tendría que pasarlo?, tendría que hacer distintos form con el while? para pasar cada parámetro?

Gracias por tu tiempo
  #4 (permalink)  
Antiguo 28/01/2013, 11:18
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas seguridad url

Código PHP:
Ver original
  1. <a class='actualizar-clientes' href='mis-progresos-eliminar.php?imagen_id=$row[imagen_id]'>Eliminar</a>
  2.  
  3. // imagen_id=$row[imagen_id]  o en vez de esto tambien puedes crear una session
  4.  
  5. $_SESSION['imagen_id'] = $row[imagen_id];
  6.  
  7. <a class='actualizar-clientes' href='mis-progresos-eliminar.php'>Eliminar</a>

Última edición por webankenovi; 28/01/2013 a las 11:26
  #5 (permalink)  
Antiguo 28/01/2013, 11:47
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Problemas seguridad url

Cita:
Iniciado por webankenovi Ver Mensaje
Código PHP:
Ver original
  1. <a class='actualizar-clientes' href='mis-progresos-eliminar.php?imagen_id=$row[imagen_id]'>Eliminar</a>
  2.  
  3. // imagen_id=$row[imagen_id]  o en vez de esto tambien puedes crear una session
  4.  
  5. $_SESSION['imagen_id'] = $row[imagen_id];
  6.  
  7. <a class='actualizar-clientes' href='mis-progresos-eliminar.php'>Eliminar</a>
Esto lo tengo claro pero el problema es que sigue quedando la ruta en la url.

Y no se como tendría que hacerlo para crear las sesiones respectivas a cada registro que me arroje, ya que si lo hago con sesiones y abro la url directamente para que cargue, me lanza la ultima,
  #6 (permalink)  
Antiguo 28/01/2013, 11:52
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas seguridad url

claro que la ruta sigue apareciendo , pero creia que tu problema era pasar el id en la url y con la session arreglas ese problema.

si abres la url directamente y te lanza la ultima es por que al final del script no has destruido esa session , ahora en ese script lo primero es verificar si existe dicha session y ya despues el proceso de eliminado y destruir la session de la imagen.
  #7 (permalink)  
Antiguo 28/01/2013, 11:57
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Problemas seguridad url

mi problema no es pasar la id por la url, mi problema es pasar la id sin la url, y que me tome la sesion que corresponde.

Como podria hacerse eso?
  #8 (permalink)  
Antiguo 28/01/2013, 12:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas seguridad url

no decia que tuvieras un problema al pasar la id en la url , si no que tu no quieres que en la url aparezca el id para que no se puedan eliminar manualmente cambiando el parametro en la url , por eso te decia que con sessiones ya evitas pasar el id en la url.

a eso me referia

podrias crear botones y pasarlo via post con el value de la imagen con un campo hidden , no se no se me ocurre ahora mismo nada mas
  #9 (permalink)  
Antiguo 28/01/2013, 12:09
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Problemas seguridad url

ok probare y cuento como me va, muchas gracias
  #10 (permalink)  
Antiguo 28/01/2013, 12:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas seguridad url

o puedes encriptarlo en la url y en la bd la id de la imagen

mis-progresos-eliminar.php?imagen_id=hv67v7y6t6r5646fy67tg

no se si me entiendes
prueba esto para que veas un simple ejemplo
Código PHP:
Ver original
  1. <?php echo "<td>".$row['imagen']."</td>"."<td>"."<a class='actualizar-clientes' href='mis-progresos-eliminar.php?imagen_id=".sha1($row[imagen_id].'salt').">Eliminar</a>"."\n"?

no uses sha1 es tan solo un ejemplo aunque sha1 con un salt tambien te puede ser efectivo

logicamente en el momento de guardar la id de la imagen tendras que encriptarlo de la misma manera para que luego los id concuerden

Última edición por webankenovi; 29/01/2013 a las 13:09

Etiquetas: seguridad, url
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 07:20.