Considere un protocolo que permita a los clientes recuperar "formularios" XML desde un servidor. Los formularios se identifican mediante un ID de formulario único, generado aleatoriamente, que está incrustado en el formulario. Los clientes completan el formulario y lo envían al servidor, la comunicación utiliza solicitudes de SOAP relativamente simples que contienen el formulario en el elemento del cuerpo de SOAP.
Tengo la tarea de implementar el lado del servidor en este escenario. Mi problema es con clientes malintencionados que pueden manipular el ID de formulario incorporado (cambiarlo a algún valor arbitrario) y enviar dicho formulario al servidor. En el lado del servidor, es posible que ya exista un formulario con el ID de formulario modificado que se sobrescribiría con el envío, lo que provocaría una pérdida de datos.
Mi solución propuesta sería incrustar un hash PBKDF2 del ID de formulario junto con el ID de formulario de texto sin formato. Si el cliente manipula la identificación simple o con hash, el servidor rechazará el envío. ¿Es esta una forma razonablemente segura de garantizar la integridad de la forma? ¿Es un problema divulgar el hash al cliente en este escenario (estamos hablando de integridad de datos aquí, no de confidencialidad)? ¿Hay algún problema potencial con mi solución (por ejemplo, usar un mejor método de derivación de claves)?
Cualquier ayuda es apreciada!