
16/05/2005, 07:09
|
| | Fecha de Ingreso: junio-2003
Mensajes: 105
Antigüedad: 21 años, 10 meses Puntos: 0 | |
sacado de la lista de PHP-es Primero voy a poner en claro el contexto.
Hay dos paginas:
- Pagina de datos: contiene el ID, la accion a desarrollar etc,y es donde el usurio debe hacer click para ejecutar.
ej: datos.php
- Pafina del proceso: se encarga de recibir los datos de la primer pagina y ejecuta las sentencias SQL...
ej: proceso.php
Mi noticia tiene id=20
La noticia ajena tiene id=100 (la cual no deberia poder manipular)
La situacion actual es que en datos.php , hay una serie de links del tipo href=proceso.php?accion=borrar&id=XX
siendo XX los id de las noticias, a las que tengo acceso, gracias a una comprobacion con la DB (en la realidad es mas complicado, pero para el caso nos sirve).
Como cualquiera puede escribir en el URL de una ventana: proceso.php?accion=borrar&id=100 ahi la embarramos mal.
Como hacer nuevamente la comprobacion de si la id de la noticia me corresponde, es en el caso real un kilombo. Dejemos de lado esa posibilidad.
La solucion original, era usar el <form> para cada enlace, de cada noticia. De esta manera nadie puede tener atacar poniendo en el URL proceso.php?accion=borrar&id=100 ya que proceso.php acepta variable/valor pasados por el metodo post del form. Con esa idea, el tema se cerraba a que nadie pudiera generar un clon del <form> que existia en datos.php ... de ahi todo este hilo.
Ahora bien, esta propuesta, de generar un algoritmo tal que genere un codigo a partir del id, de la accion, del usuario, para añadir a los enlaces ya existentes; simplemente me parece genial (lo simple es siempre mejor) :D ya que seria imposible para el usuario lograr generar ese codigo para un id (de la noticia que no le corresponde) determinado.
Para mi el algoritmo deberia estar basado en el "id" de la noticia, la "accion" a llevar a cabo, la "pass" del usuario, una "clave" propia del algoritmo, un timespam que viajaria solo si esta en un input oculto, para que proceso.php pueda usarlo, y unos cuantos numeros primos :)
El Timestamp tiene sentido solo para establecer un vencimiento a la MAC
Quizas mejor que el password del usuario usa el nombre de usuario. Este ultimo es unico mientras que la password no. Ademas, el nombre de usuario es publico y la contraseña no debe serlo. El efecto que obtendras es el mismo y no andas divulgando informacion privada por alli.
saludos |