UnUessable UID sono difficili ... Ricorda che spesso l'attaccante può permettersi di essere paziente, quindi può fare molti tentativi con vari potenziali valori di UID. Al fine di rendere UID veramente inconcepibile dall'attaccante, dovresti generarli casualmente in uno spazio abbastanza grande: questo significa usare un crittografico strong PRNG (il tuo server ne ha già uno, chiamato /dev/urandom
su sistemi di tipo Unix, o CryptGenRandom()
su Windows) e rendendo l'UID abbastanza grande da non colpire l'attaccante uno "per caso" (quindi dovrebbe essere, al minimo , 12 byte lungo, preferibilmente più).
A meno che tu non usi un UID così grasso e casuale, non puoi fare affidamento sul fatto che UID sia sconosciuto all'attaccante.
Un altro punto, che altri hanno fatto, è che il token CSRF è, per sua natura, un pezzo di dati che viene inviato dal cliente insieme alla sua richiesta (la richiesta sarà accettata in virtù del venire con quel token). Pertanto, se l'UID è il token CSRF, allora ha attraversato il client ... a quel punto, possiamo solo supporre che l'autore dell'attacco ne abbia una copia. Questa è l'idea alla base del concetto di "i token segreti dovrebbero durare solo un breve periodo": rendere la vita più difficile per l'attaccante, accorciando la finestra temporale durante la quale può essere usato un token segreto afferrato. L'UID è longevo, quindi non appropriato in quel ruolo.