Tengo un escenario en el que los usuarios de un sitio que estoy creando necesitan poder 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.Implementación de URL de activación seguras y únicas de "uso único" en ASP.NET (C#)
A los usuarios se les enviará un correo electrónico desde el sitio, proporcionándoles un enlace exclusivo 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 al registrar sitios como foros, que contienen un parámetro de URL único generado de forma aleatoria, específicamente relacionado con un único propósito (como verificar una dirección de correo electrónico para un foro).
Mis consultas se refieren a la implementación segura de este problema. Estaba considerando usar un GUID como el 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 forzados en el tiempo)?
¿La implementación de GUID de .NET es suficientemente aleatoria en el sentido de que existe la misma posibilidad de generación de todos los valores posibles en el "espacio clave"?
Si usar un GUID es un enfoque aceptable, ¿debe el sitio redirigir a la información mediante la reescritura de URL o asociar 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?
¿Debo considerar usar el SELECT NEWID() de TSQL como generador de GUID sobre la implementación de .NET?
¿Estoy completamente equivocado con mi enfoque a este problema?
Muchas gracias,
Carl
Lo sentimos, pero esto es realmente incorrecto y engañoso: los GUID no son buenos para este tipo de cosas, consulte mi respuesta a continuación. – AviD
GUID, en el sentido de * identificador único * no es realmente adecuado (como mencioné en el n. ° 2). Pero no hay nada que le impida usarlos como un número de 128 bits. –
Pero lo cierto es que no son * realmente * números de 128 bits (a pesar de que se necesitan 128 bits para almacenarlos). De nuevo, demasiado de esto es estático o fácilmente adivinable. Los GUID no tienen uso en identificadores seguros. Lo que el OP necesita es algo seguro, y lo suficientemente largo en el sentido de "128 bits de aleatoriedad", que los GUID no son, ni siquiera cerca. – AviD