Lotta contro i bot (VB)
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 postbackCutoffWindowSeconds
intervallo di tempo in cui i postback da un ip sono misureCutoffMaximumInstances
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 NoBot
il 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 NoBot
risultato:
<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 (fare clic per visualizzare l'immagine a dimensione intera)