Lotta contro i bot (VB)

di Christian Wenz

Scarica il PDF

Bot automatizzati ingessare weblog e altri siti Web con posta indesiderata, inviando moduli di commento senza alcuna interazione dell'utente. Il controllo NoBot nel ASP.NET AJAX Control Toolkit può aiutare a combattere tali bot.

Panoramica

Bot automatizzati ingessare weblog e altri siti Web con posta indesiderata, inviando moduli di commento senza alcuna interazione dell'utente. Il controllo NoBot nel ASP.NET AJAX Control Toolkit può aiutare a combattere tali bot.

Passaggi

Un approccio comune per sconfiggere i bot consiste nell'usare il test CAPTCHAs Completely Automated Public Turing per indicare a Computers and Humans Apart. Un test turing è stato originariamente un test in cui qualcuno aveva bisogno di decidere se un partner di comunicazione è un essere umano o una macchina. Nel web, un CAPTCHA è in genere costituito da un'immagine con alcune lettere distorte su di esso. L'idea è che solo un essere umano può leggere le lettere sull'immagine, mentre gli algoritmi OCR avranno esito negativo.

Esistono diversi vantaggi e svantaggi per questo approccio, ma una discussione su questo argomento esula dall'ambito di questa esercitazione. Esiste tuttavia un controllo nel ASP.NET AJAX Control Toolkit che offre un approccio simile: NoBot. È più facile superare un CAPTCHA, ma è molto facile da usare e tariffe estremamente bene su siti Web come blog dove è considerato un successo se la maggior parte dei tentativi di spam sono sconfitti, che il NoBot controllo può fare.

NoBot intercetta il postback del modulo Web ASP.NET corrente se viene soddisfatta almeno una di queste condizioni:

  • Il browser non riesce a risolvere un puzzle JavaScript (ad esempio quando JavaScript è disattivato)
  • L'utente ha inviato il modulo in modo rapido
  • L'indirizzo IP client ha inviato il modulo troppo spesso in un determinato periodo di tempo.

Per verificare la presenza di queste condizioni, il NoBot controllo richiede questi attributi (tutti facoltativi):

  • ResponseMinimumDelaySeconds quantità minima di secondi tra i postback
  • CutoffWindowSeconds intervallo di tempo in cui i postback da un ip sono misure
  • CutoffMaximumInstances quantità massima di secondi per intervallo di tempo

Il markup seguente richiede che siano trascorsi almeno due secondi tra i postback e che siano presenti solo cinque postback o meno entro un intervallo di 30 secondi:

<ajaxToolkit:NoBot ID="nb" runat="server" CutoffMaximumInstances="5"
 CutoffWindowSeconds="30" ResponseMinimumDelaySeconds="2" />

Quindi, come al solito assicurarsi di includere nella ScriptManager pagina in modo che venga caricata la libreria ASP.NET AJAX e che sia possibile usare Control Toolkit:

<asp:ScriptManager ID="asm" runat="server" />

Poiché la maggior parte dei controlli NoBot viene eseguita sul lato server, è necessario controllare il risultato di queste convalide. Questa operazione può essere eseguita chiamando NoBotil metodo di IsValid() . Ha un argomento (come out parametro/ByRef parametro) di tipo NoBotState. La relativa rappresentazione di stringa contiene il motivo quando il controllo ha esito negativo e Valid in caso contrario. Il codice seguente restituisce un messaggio in base al NoBotrisultato:

<script runat="server">
 Sub Page_Load()
 If Page.IsPostBack Then
 Dim state As NoBotState
 If Not nb.IsValid(state) Then
 Label1.Text = "Data refused (" + HttpUtility.HtmlEncode(state.ToString()) + ")"
 Else
 Label1.Text = "Data entered."
 End If
 End If
 End Sub
</script>

Infine, è necessario un modulo per inviare e un elemento etichetta per restituire il messaggio.

Your comment:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"/><br />
<input type="submit" id="Submit1" runat="server" value="Submit Form" /><br />
<asp:Label ID="Label1" runat="server" />

Quando si esegue questo script e si disattiva JavaScript o si invia il modulo entro i primi due secondi o si invia il modulo sette volte entro trenta secondi, viene visualizzato un messaggio di errore. Tuttavia, usare questo controllo in modo saggio, poiché solo circa il 90-95% degli utenti ha attivato JavaScript, pertanto il 5-10% degli utenti avrà esito negativo NoBot.

Questo messaggio di errore potrebbe essere stato causato da un bot

Questo messaggio di errore potrebbe essere stato causato da un bot (fare clic per visualizzare l'immagine a dimensione intera)