Combatir los bots (VB)
por Christian Wenz
Bots automatizados llenan blogs y otros sitios web de correo no deseado, enviando formularios de comentarios sin ninguna interacción del usuario. El control NoBot en ASP.NET AJAX Control Toolkit puede ayudar a luchar contra esos bots.
Información general
Bots automatizados llenan blogs y otros sitios web de correo no deseado, enviando formularios de comentarios sin ninguna interacción del usuario. El control NoBot en ASP.NET AJAX Control Toolkit puede ayudar a luchar contra esos bots.
Pasos
Un enfoque común para derrotar a los bots es usar CAPTCHA (prueba pública de Turing completamente automatizada para distinguir equipos de humanos). Una prueba de Turing era originalmente una prueba en la que alguien tenía que decidir si un asociado de comunicación era un humano o una máquina. En la web, un CAPTCHA normalmente consta de una imagen que contiene algunas letras distorsionadas. La idea es que solo un humano pueda leer las letras de la imagen, mientras que los algoritmos de OCR producirán un error.
Este enfoque tiene varias ventajas y desventajas, pero una explicación de esto está fuera del ámbito de este tutorial. Sin embargo, hay un control en ASP.NET AJAX Control Toolkit que proporciona un enfoque similar: NoBot
. Es más fácil de superar que un CAPTCHA, pero es muy fácil de usar y funciona extremadamente bien en sitios web como blogs, donde se considera un éxito que la mayoría de los intentos de correo no deseado sean derrotados, cosa que el control NoBot
puede hacer.
NoBot
intercepta el postback del formulario web de ASP.NET actual si se cumple al menos una de estas condiciones:
- El explorador no puede resolver un rompecabezas de JavaScript (por ejemplo, cuando JavaScript está desactivado).
- El usuario envió el formulario demasiado rápido
- La dirección IP del cliente envió el formulario con demasiada frecuencia en un período de tiempo determinado.
Para comprobar estas condiciones, el control NoBot
requiere estos atributos (todos ellos opcionales):
ResponseMinimumDelaySeconds
cantidad mínima de segundos entre postbacksCutoffWindowSeconds
duración del intervalo de tiempo en el que los postbacks de una dirección IP son medidosCutoffMaximumInstances
cantidad máxima de segundos por intervalo de tiempo
El marcado siguiente exige que transcurran al menos dos segundos entre postbacks y que solo haya cinco postbacks o menos en un intervalo de 30 segundos:
<ajaxToolkit:NoBot ID="nb" runat="server" CutoffMaximumInstances="5"
CutoffWindowSeconds="30" ResponseMinimumDelaySeconds="2" />
A continuación, como de costumbre, asegúrese de incluir ScriptManager
en la página para que se cargue la biblioteca ASP.NET AJAX y se pueda usar el Control Toolkit:
<asp:ScriptManager ID="asm" runat="server" />
Dado que la mayoría de las comprobaciones que NoBot
realiza se producen en el lado servidor, debe comprobar el resultado de estas validaciones. Esto se puede hacer llamando al método IsValid()
de NoBot
. Tiene un argumento (como parámetro out
/ parámetro ByRef
) que es de tipo NoBotState
. Su representación de cadena contiene el motivo cuando se produce un error en la comprobación y cuando, de lo contrario, es Valid
. El código siguiente genera un mensaje según el resultado de NoBot
:
<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>
Por último, necesita un formulario para enviar y un elemento de etiqueta para generar el mensaje, y ya ha terminado.
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" />
Cuando ejecute este script y desactive JavaScript o envíe el formulario en los primeros dos segundos o envíe el formulario siete veces en un plazo de treinta segundos, recibirá un mensaje de error. Sin embargo, use este control sabiamente, ya que solo el 90-95 % de los usuarios tienen activado JavaScript. Por lo tanto, el 5-10 % de los usuarios no superará la prueba NoBot
.
Este mensaje de error podría deberse a un bot (haga clic para ver la imagen a tamaño completo).