Estoy construyendo un CMS y me encuentro ocupado con la parte de editar los posts. Lo referente a la edición lo tengo ubicado dentro de un formulario quien se llamará a si mismo para procesar la solicitud. Para saber el id del post que estoy editando tengo como campo oculto su ID, pero claro, como el cliente puede acceder al código HTML podría alterar ese ID.
El método que llevo usando es el tema de los token. Crearme una función que empleado una clave privada del lado del servidor, encripte por ejemplo todo lo que le pase como parámetro, en este caso el ID del post. Sin embargo si utilizo este método, este token es válido para toda la historia de la navegación de mi web.
Si el ID lo encripto junto con un timestamp, pues estoy en las mismas a no ser que verifique por ejemplo cuánto hace que se generó el token y si se hizo por ejemplo hace 5 minutos invalidarlo. Sin embargo es una solución que no me termina mucho por convencer.
Luego he estado mirando el caso que se utiliza aquí en MV. Cada vez que refresco la web se genera un token nuevo y el antiguo sigue siendo válido para editar por ejemplo el comentario. ¿Cómo funciona el sistema en este caso? ¿Hace uso de variables de sesión? Por ejemplo, tener
$_SESSION["formulario_enviar_post_tokens"] = array(
array("jrhebf3084fh43ufhbjwfd", "efhjo39f7yg3refbhdjlaasuydb3yb23", "fehwbfhjwebfo2ygbd2wef")
);
¿Tendría que guardar en un array todos los tokens que genero? Es que si guardo solo uno, si abro varias pestañas, machaco el anterior... ¿Guardar todo esto no consumirá muchos recursos?
No sé, a ver que me comentáis.
EDIT: Otra pregunta. ¿Qué diferencia hay entre tokens y nonce?