Ver Mensaje Individual
  #18 (permalink)  
Antiguo 29/01/2013, 15:50
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: seguridad web

El ejemplo:
Vamos a editar un usuario, con campo clave "id".
En vez de incluir en el formulario:
Código HTML:
Ver original
  1. <input type="hidden" name="id" value="35" />

Lo que se hace en PHP es:
Código PHP:
Ver original
  1. <?php
  2.    /* Se ha obtenido en $row los datos del usuario.
  3.        MY_SECRET_HASH está definido en la sesion, y es inicializado a una cadena aleatoria.
  4.        $formName es un nombre que le demos al formulario.
  5.    */
  6.    $hash=md5($_SESSION["MY_SECRET_HASH"].$formName.$row["id"]);
  7.    $_SESSION["FORMS"][$hash]=array("id"=>$row["id"]);
  8. ?>
  9. <input type="hidden" name="hash" value="<?php echo $hash;?>" />

Al recibir el POST, se obtiene el valor de hash, se recupera el id de la sesion, se une con el resto de los $_POST, antes de procesar el formulario.

El objetivo es impedir que, manipulando las variables POST, se acceda a objetos que, por descuido en el lado del servidor, el usuario no puede tener acceso.