Microsoft ci fornisce funzionalità integrate che utilizziamo nella nostra applicazione per motivi di sicurezza, quindi nessuno può hackerare il nostro sito o invadere alcune informazioni critiche.
Uso di ValidateAntiForgeryToken
Proviamo con un semplice esempio per capire questo concetto. Non voglio renderlo troppo complicato, ecco perché userò un modello di un'applicazione MVC, già disponibile in Visual Studio. Lo faremo passo dopo passo. Iniziamo.
Passaggio 1: creare due applicazioni MVC con modello Internet predefinito e assegnare quei nomi rispettivamente come CrossSite_RequestForgery e Attack_Application.
Ora, apri Web Config dell'applicazione CrossSite_RequestForgery e modifica la stringa di connessione con quella indicata di seguito, quindi salva.
`
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF;
Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
Ora, fai clic su Strumenti >> NuGet Package Manager, quindi Package Manager Console
Ora, esegui i tre comandi di seguito indicati nella Console Gestione pacchetti per creare il database.
Enable-Migrations add-migrazione primo database di aggiornamento
Note importanti - Ho creato un database con il primo approccio al codice perché voglio fare questo esempio nel modo in cui funzionano gli sviluppatori. È inoltre possibile creare database manualmente. È la vostra scelta.
- Ora apri Account Controller. Qui vedrai un metodo di registrazione il cui tipo è post. Sopra questo metodo, dovrebbe essere disponibile un attributo come [ValidateAntiForgeryToken]. Commenta questo attributo. Ora, fai clic con il tasto destro sul registro e fai clic su Vai a Visualizza. Di nuovo, troverai un aiuto html come @ Html.AntiForgeryToken (). Commenta anche questo. Esegui l'applicazione e fai clic sul pulsante di registrazione. L'URL sarà aperto come:
http: // localhost: 52.269 / Account / Register
Note - Ora so che la domanda che viene sollevata nella mente di tutti i lettori è perché questi due aiutanti debbano essere commentati, poiché tutti sanno che vengono utilizzati per convalidare la richiesta. Quindi, voglio solo farvi sapere che questo è solo perché voglio mostrare la differenza dopo e prima di applicare questi helper.
Ora apri la seconda applicazione che è Attack_Application. Quindi, apri il metodo Register di Account Controller. Basta cambiare il metodo POST con quello semplice, mostrato di seguito.
Modulo di registrazione
- @ Html.LabelFor (m => m.UserName) @ Html.TextBoxFor (m => m.UserName)
- @ Html.LabelFor (m => m.Password) @ Html.PasswordFor (m => m.Password)
- @ Html.LabelFor (m => m.ConfirmPassword) @ Html.PasswordFor (m => m.ConfirmPassword)
7. Ora supponiamo di essere un hacker e di conoscere l'URL da cui è possibile registrare l'utente nell'applicazione CrossSite_RequestForgery. Ora, hai creato un sito di Forgery come Attacker_Application e hai appena inserito lo stesso URL nel metodo post.
8.Esegui ora questa applicazione e compila i campi del registro e fai clic su Registra. Vedrai che sei registrato nell'applicazione CrossSite_RequestForgery. Se controlli il database dell'applicazione CrossSite_RequestForgery, vedrai e inserirai la voce che hai inserito.
- Importante: ora apri l'applicazione CrossSite_RequestForgery e commenta il token in Account Controller e registra la vista. Prova a registrarti di nuovo con lo stesso processo. Quindi, si verificherà un errore come di seguito.
Errore del server nell'applicazione '/' ________________________________________ Il cookie anti-contraffazione richiesto "__RequestVerificationToken" non è presente.
Questo è ciò che dice il concetto. Quello che aggiungiamo in View ie @ Html.AntiForgeryToken () genera __RequestVerificationToken sul tempo di caricamento e [ValidateAntiForgeryToken] disponibile sul metodo Controller. Abbina questo token al momento della pubblicazione. Se il token è lo stesso, significa che si tratta di una richiesta valida.