Un controllo di tipo CAPTCHA serve a discriminare se il visitatore del nostro sito sia un utente "umano" o un Bot, solitamente utilizzato per inviare spam o procedere a registrazioni fasulle; esistono varie tipologie di CAPTCHA, che richiedono di inserire lettere o numeri visualizzati in maniera distorta, così che un programma non possa riconoscerli, ma probabilmente l'implementazione in assoluto più utilizzata è reCAPTCHA, di Google:
Per poter includere reCAPTCHA all'interno di una nostra applicazione il primo passo è effettuare la registrazione (gratuita) all'indirizzo http://www.google.com/recaptcha e ottenere una coppia di chiavi pubblica/privata, indispensabili rispettivamente per visualizzare il controllo e validare l'input dell'utente.
Il passo successivo, se stiamo sviluppando un'applicazione basata su ASP.NET MVC 3, è quello di aggiungere tramite NuGet il package ASP.NET Web Helpers Library, distribuito da Microsoft, che include il necessario helper. Nel caso di un'applicazione WebMatrix, invece, questo package è già incluso all'interno del template di progetto standard.
A questo punto, per generare il markup e presentare il controllo reCAPTCHA in pagina, non dobbiamo far altro che utilizzare l'html helper ReCaptcha con la chiave pubblica in nostro possesso, come mostrato nel codice seguente:
<div class="editor-field"> @ReCaptcha.GetHtml("Chiave pubblica", theme: "white") </div>
Se vogliamo, possiamo specificare anche una serie di opzioni, come ad esempio il tema da utilizzare o la lingua, secondo le specifiche presenti all'indirizzo
http://code.google.com/apis/recaptcha/docs/customization.html
Successivamente, lato server, dobbiamo verificare che l'input dell'utente sia stato corretto e per farlo abbiamo a disposizione il metodo Validate, che dobbiamo invocare fornendo la chiave privata:
[HttpPost] public ActionResult Register(RegisterModel model) { if (!ReCaptcha.Validate("Chiave privata")){ ModelState.AddModelError("", "ReCaptcha non valido"); } if (ModelState.IsValid) { // .. registrazione utente .. } }
Nel caso in cui il controllo fallisca, non dobbiamo far altro che aggiungere un errore al model, in modo da impedire il salvataggio dei dati sul database.
Il codice per WebMatrix è assolutamente analogo, e l'unica differenza è l'assenza dei concetti di Controller e Action all'interno di ASP.NET Web Pages:
@{ if (IsPost) { if (!ReCaptcha.Validate("Chiave privata")) { ModelState.AddFormError("captcha response was not correct."); } // altro codice qui .. }
Riferimenti utili
Il nostro speciale su ASP.NET Razorhttps://www.aspitalia.com/focuson/1253/Speciale-Razor-View-Engine-WebMatrix-ASP.NET-MVC.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Definire stili a livello di libreria in Angular
Gestione dell'annidamento delle regole dei layer in CSS
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Miglioramenti nell'accessibilità con Angular CDK
Usare il colore CSS per migliorare lo stile della pagina
Creare alias per tipi generici e tuple in C#
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Eseguire operazioni sui blob con Azure Storage Actions
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Usare lo spread operator con i collection initializer in C#
Filtering sulle colonne in una QuickGrid di Blazor