¿Cuál es la mejor manera de pasar datos confidenciales de una página a otra en ASP.NET MVC?

Estoy diseñando una aplicación web que tiene que pasar información confidencial (como el número de cuenta del usuario) de una página a otra hasta que el usuario termine (la aplicación es como un asistente), con fines de registro. ¿Cuál es la mejor manera de almacenar estos datos para que cada página en el proceso pueda acceder a los datos? ¿Debería almacenarlo en la sesión? En la base de datos, luego eliminarlo al final? ¿Algún método en el que no haya pensado todavía?

preguntado el 10 de mayo de 12 a las 09:05

Posiblemente asocie cada cliente con un GUID, utilícelo para pasar de una página a otra, verificando si ha sido manipulado, etc. Luego, tal vez una llamada de servicio a un servicio wcf para recuperar la información más confidencial cuando la necesite, nuevamente bloqueado en consecuencia / -

Gracias por el comentario Chris, pero lo que me interesa es dónde y cómo almacenar ese GUID. -

Si pasa como un parámetro del controlador -> ver, etc. en sus publicaciones de un lado a otro, debería estar bien, ¿verdad? Soy bastante nuevo en MVC3, pero si comprueba que no ha sido manipulado, ¿debería estar bien en cuanto a seguridad? -

2 Respuestas

Yo personalmente trato de evitar el uso de la sesión donde sea posible. Estas son las opciones que conozco cuando se trata de escenarios de tipo asistente:

Opción 1

Use JQuery como se discutió en El blog de Nadeem Afana. Las páginas se muestran al usuario una por una, pero la información no se envía hasta la página final.

Opción 2

¿La información en cada página es sensible? ¿Podría estructurarse para que la información confidencial solo se pida en la página final? Si es así, podría serializar datos a través de las páginas como se discutió en Respuesta de Darin Dimitrov y simplemente no proporcionar un botón Atrás en la página final. Alternativamente, los datos que se serializan se pueden cifrar con facilidad utilizando el mismo software de serialización MVC Futures, aunque no estoy seguro de qué tan confidencial es su información y si desea confiar en esto. La respuesta también menciona alternativas como paso a paso pero no tengo experiencia con esto.

Opción 3

Si la información es confidencial, puede escribir/leer la información en una base de datos entre solicitudes.

Opción 4

Finalmente, si no puede usar ninguno de los anteriores, usaría Session o TempData (que es un contenedor alrededor de la sesión), pero tenga cuidado con TempData, si el usuario actualiza la página, la información se perderá.

contestado el 23 de mayo de 17 a las 12:05

Gracias por la respuesta. Creo que solo 3 o 4 me servirían. Necesito la información confidencial para registrar cada paso para que sepamos si el usuario encontró un error y si completó todo el flujo de trabajo. - Daniel T.

La sesión me parece bien, desaparece (casi) automáticamente.
Si está paranoico, puede encriptarlo o almacenarlo en otro lugar y encontrarlo a través de un hash. ¿Este "algún otro lugar" es entonces su próximo punto de ahorro-suficiente-?

Solo asegúrese de que no llegue al cliente web.

contestado el 10 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.