Implementación de URL de activación seguras, únicas y de "uso único" en ASP.NET (C #)

Tengo un escenario en el que los usuarios de un sitio que estoy construyendo necesitan la capacidad de ingresar información básica en un formulario web sin tener que iniciar sesión. El sitio se está desarrollando con ASP.NET/C# y está utilizando MSSQL 2005 para sus datos relacionales.

Los usuarios recibirán un correo electrónico desde el sitio, proporcionándoles un enlace único para ingresar la información específica que se requiere. El correo electrónico será muy similar al estilo de correo electrónico que todos recibimos cuando nos registramos en sitios como foros, que contiene un parámetro de URL único generado aleatoriamente específicamente relacionado con un solo propósito (como verificar una dirección de correo electrónico para un foro).

Mis consultas están relacionadas con la implementación segura de este problema. Estaba considerando usar un GUID como identificador único, pero no estoy seguro de sus implicaciones en el mundo de la seguridad.

Es un GUID lo suficientemente largo como para que los valores no puedan adivinarse fácilmente (o forzarse con el tiempo)?

La implicación GUID de .NET es lo suficientemente aleatoria en el sentido de que existe la misma posibilidad de generar todos los valores posibles en el "espacio clave"?

Si usar un GUID es un enfoque aceptable, ¿debería el sitio redirigir a la información mediante la reescritura de URL o asociando la información en una tabla de datos con el GUID como referencia?

¿Utilizará una reescritura de URL para ocultar la verdadera fuente de los datos?

¿Debería considerar usar SELECT NEWID () de TSQL como generador de GUID sobre la implementación de .NET?

¿Estoy completamente equivocado con mi enfoque de este problema?

Muchas gracias

Carl

Respuestas a la pregunta(12)

Su respuesta a la pregunta