Indescriptible los UID son difíciles ... Recuerde que el atacante a menudo puede permitirse ser paciente, por lo que puede hacer muchos intentos con varios valores de UID potenciales. Para que el atacante realmente no pueda adivinar el UID, tendría que generarlos al azar en un espacio suficientemente grande: esto significa usar un cryptographically fuerte PRNG (su servidor ya tiene uno, llamado /dev/urandom
en sistemas similares a Unix, o CryptGenRandom()
en Windows) y haciendo que el UID sea lo suficientemente grande para que el atacante no golpee uno "por casualidad" (por lo que debería ser, como mínimo , de 12 bytes, preferiblemente más).
A menos que uses un UID grande y aleatorio, no puedes confiar en que el atacante desconoce el UID.
Otro punto, que otros han señalado, es que el token CSRF es, por naturaleza, un dato que el cliente envía junto con su solicitud (la petición será aceptada en virtud de venir con ese token). Por lo tanto, si el UID es el token CSRF, entonces ha pasado por el cliente ... en ese momento, solo podemos asumir que el atacante obtuvo una copia del mismo. Esta es toda la idea detrás del concepto de "las fichas secretas deberían durar poco tiempo": para hacer la vida más difícil para el atacante, acortando la ventana de tiempo durante la cual se puede usar una ficha secreta agarrada. El UID es de larga duración, por lo que no es apropiado para ese rol.