Sto lavorando per migliorare la sicurezza del sito Web della mia azienda e ho voluto creare un token per impedire tentativi di contraffazione che potrebbero essere facilmente mantenuti questo è ciò che mi è venuto in mente.Creazione di un AntiForgeryToken tramite Iniezione delle dipendenze
public class AntiForgeryToken
{
private readonly string _referenceToken;
public AntiForgeryToken()
{
_referenceToken = Guid.NewGuid().ToString();
}
public string ReferenceToken
{
get { return _referenceToken; }
}
}
Nella mia classe di base per il mio MasterPage ho un HiddenField avvolto con proprietà denominata: ReferenceToken
protected virtual void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
InjectToken();
}
ValidateToken();
}
private void InjectToken()
{
var token = ObjectFactory.GetInstance<AntiForgeryToken>();
ReferenceToken = token.ReferenceToken;
}
private void ValidateToken()
{
var token = ObjectFactory.GetInstance<AntiForgeryToken>();
if (ReferenceToken.Equals(token.ReferenceToken, SC.InvariantCultureIgnoreCase))
return;
...do stuff for failed token
}
devo StructureMap gestire la memorizzazione del token all'interno della sessione in modo che sia persistito per ogni sessione utente, sarebbero tutti di questo è una valida implementazione di uno schema AntiForgery?
Edit: Sembra che ci sia una certa confusione sulla mia domanda, sì ho capito ASP.NET MVC è dotato di un sistema di AntiForgeryToken, questa domanda è esplicitamente di come ricreare questo per WebForms per impedire l'utilizzo di un attacco CSRF (Cross Site Request Forgery). Capisco questo in nessun modo rimuove la necessità di una corretta autorizzazione dei diritti degli utenti.
Stavo per aprire il link che @Neal e @solairaja hanno pubblicato: Prevent Cross-Site Request Forgery (CSRF) using ASP.NET MVC’s AntiForgeryToken() helper. Questo articolo spiega di più su cosa sia l'attacco CSRF e su come MVC lo arresta, tuttavia la loro soluzione non è applicabile alle webform, motivo per cui ho implementato la mia.
Dopo aver visto la risposta di @Neal penso che molto probabilmente sarà la risposta accettata dal momento che non mi ero reso conto che avrei potuto ottenere il vero codice sorgente dallo strumento MVC che molto probabilmente sostituirà la creazione guid. Ma lascerò aperta la domanda nel caso in cui qualcun altro abbia qualche informazione preziosa da aggiungere.
che volevo usare i token MVC in una pagina WebForms - cioè post dal Web Form a MVC e ancora convalidare. Vedere questa risposta: http://stackoverflow.com/questions/1347728/using-an-mvc-htmlhelper-from-a-webform/2553583#2553583 – Keith