Ho uno scenario in cui gli utenti di un sito che sto costruendo hanno bisogno di inserire alcune informazioni di base in un webform senza dover effettuare l'accesso. Il sito è in fase di sviluppo con ASP.NET/C# e utilizza MSSQL 2005 per i suoi dati relazionali.Implementazione di URL di attivazione "monouso" sicuri e univoci in ASP.NET (C#)
Gli utenti riceveranno un'e-mail dal sito, fornendo loro un collegamento univoco per inserire le informazioni specifiche richieste. L'e-mail sarà molto simile allo stile di e-mail che riceviamo quando ci si registra per siti come i forum, che contiene un parametro URL univoco generato in modo casuale e specifico per un singolo scopo (come la verifica di un indirizzo email per un forum).
Le mie domande riguardano l'implementazione sicura di questo problema. Stavo considerando l'utilizzo di un GUID come identificatore univoco, ma non sono sicuro delle sue implicazioni nel mondo della sicurezza.
- È un GUID sufficientemente lungo in modo tale che i valori non possano essere facilmente indovinati (o forzati brute nel tempo)?
La GUID di .NET è sufficientemente casuale nel senso che esiste una possibilità uguale di generazione di tutti i valori possibili nello "spazio chiave"?
Se l'utilizzo di un GUID è un approccio accettabile, il sito deve quindi reindirizzare le informazioni tramite riscrittura degli URL o associando le informazioni in un datatable al GUID come riferimento?
L'utilizzo di una riscrittura dell'URL nasconderà la vera origine dei dati?
Devo considerare l'utilizzo di SELECT NEWID() di TSQL come generatore GUID rispetto all'implementazione .NET?
Sono completamente in errore con il mio approccio a questo problema?
Molte grazie,
Carl
Ci scusiamo, ma questo è veramente sbagliato e fuorviante - GUID non sono buoni per questo genere di cose, vedere la mia risposta qui sotto. – AviD
GUID, nel senso di * identificativo univoco * non è particolarmente adatto (come ho detto in # 2). Ma non c'è nulla che ti impedisca di usarli come un numero a 128 bit. –
Ma il fatto è che sono * non * numeri a 128 bit (anche se richiede 128 bit per memorizzarli). Di nuovo, troppo di ciò è statico o facilmente ipotizzabile. I GUID non hanno alcun uso negli identificatori sicuri. Ciò di cui l'OP ha bisogno è qualcosa di sicuro e abbastanza a lungo nel senso di "128 bit di casualità", che i GUID non sono, nemmeno vicini. – AviD