Uso di un CAPTCHA per impedire ai bot di usare il sito Razor Web ASP.NET
da Microsoft
Questo articolo illustra come usare ReCaptcha (una misura di sicurezza) per impedire ai programmi automatizzati (bot) di eseguire attività in un sito Web Pagine Web ASP.NET (Razor).
Cosa si apprenderà:
- Come aggiungere un test CAPTCHA al sito.
Queste sono le funzionalità ASP.NET introdotte nell'articolo:
- Helper
ReCaptcha
.Nota
Le informazioni contenute in questo articolo si applicano a Pagine Web ASP.NET 1.0 e pagine Web 2.
Informazioni su CAPTCHAs
Ogni volta che si consente agli utenti di registrarsi nel sito o anche solo immettere un nome e un URL (ad esempio per un commento di blog), si potrebbe ottenere un'inondazione di nomi falsi. Questi sono spesso lasciati da programmi automatizzati (bot) che tentano di lasciare GLI URL in ogni sito Web che possono trovare. Una motivazione comune consiste nel pubblicare gli URL dei prodotti in vendita.
È possibile assicurarsi che un utente sia reale e non un programma computer usando un CAPTCHA per convalidare gli utenti quando registrano o in caso contrario immettono il nome e il sito. CAPTCHA è il test completamente automatizzato di Turing pubblico per indicare ai computer e agli esseri umani a parte. Un CAPTCHA è un test di risposta alla sfida in cui l'utente viene chiesto di eseguire qualcosa che è facile da fare per una persona, ma difficile da eseguire per un programma automatizzato. Il tipo più comune di CAPTCHA è uno dei casi in cui vengono visualizzate alcune lettere distorte e viene chiesto di digitarli. La distorsione dovrebbe rendere difficile per i bot decifrare le lettere.
Aggiunta di un test ReCaptcha
Nelle pagine ASP.NET è possibile usare l'helper per eseguire il ReCaptcha
rendering di un test CAPTCHA basato sul servizio ReCaptcha. L'helper ReCaptcha visualizza un'immagine di due parole distorte che gli utenti devono immettere correttamente prima della convalida della pagina. La risposta utente viene convalidata dal servizio ReCaptcha.Net.
Registrare il sito Web con il servizio ReCaptcha. Al termine della registrazione, si otterrà una chiave pubblica e una chiave privata.
Aggiungere la libreria di helper Web ASP.NET al sito Web, come descritto in Installazione di helper in un sito Pagine Web ASP.NET, se non è già stato fatto.
Se non si dispone già di un file _AppStart.cshtml , nella cartella radice di un sito Web creare un file denominato _AppStart.cshtml.
Aggiungere le impostazioni helper seguenti
Recaptcha
nel file _AppStart.cshtml :@using Microsoft.Web.Helpers; @{ // Add the PublicKey and PrivateKey strings with your public // and private keys. Obtain your PublicKey and PrivateKey // at the ReCaptcha.Net (http://recaptcha.net) website. ReCaptcha.PublicKey = "your-public-key"; ReCaptcha.PrivateKey = "your-private-key"; }
Impostare le
PublicKey
proprietà ePrivateKey
usando le proprie chiavi pubbliche e private.Salvare il file _AppStart.cshtml e chiuderlo.
Nella cartella radice di un sito Web creare una nuova pagina denominata Recaptcha.cshtml.
Sostituire il contenuto esistente con quanto segue:
@using Microsoft.Web.Helpers; @{ var showRecaptcha = true; if (IsPost) { if (ReCaptcha.Validate()) { @:Your response passed! showRecaptcha = false; } else{ @:Your response didn't pass! } } } <!DOCTYPE html> <html> <head> <title>Testing Global Recaptcha Keys</title> </head> <body> <form action="" method="post"> @if(showRecaptcha == true){ if(ReCaptcha.PrivateKey != ""){ <p>@ReCaptcha.GetHtml()</p> <input type="submit" value="Submit" /> } else { <p>You can get your public and private keys at the ReCaptcha.Net website (http://recaptcha.net). Then add the keys to the _AppStart.cshtml file.</p> } } </form> </body> </html>
Eseguire la pagina Recaptcha.cshtml in un browser. Se il valore è valido, la pagina visualizza il
PrivateKey
controllo ReCaptcha e un pulsante. Se le chiavi non sono state impostate a livello globale in _AppStart.html, la pagina visualizzerebbe un errore.Immettere le parole per il test. Se si supera il test ReCaptcha, viene visualizzato un messaggio a tale effetto. In caso contrario, viene visualizzato un messaggio di errore e il controllo ReCaptcha viene ricreato.
Nota
Se il computer si trova in un dominio che usa il server proxy, potrebbe essere necessario configurare l'elemento defaultproxy
del file diWeb.config . Nell'esempio seguente viene illustrato un file Web.config con l'elemento defaultproxy
configurato per consentire al servizio ReCaptcha di funzionare.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://myProxy.MyDomain.com"
bypassonlocal="true"
autoDetect="False"
/>
</defaultProxy>
</system.net>
</configuration>