Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2013, 01:43
shyvano
 
Fecha de Ingreso: julio-2012
Ubicación: Santiago
Mensajes: 45
Antigüedad: 11 años, 8 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