Freigeben über


Abwehren von Bots (VB)

von Christian Wenz

PDF herunterladen

Automatisierte Bots pflastern Weblogs und andere Websites mit Spam und übermitteln Kommentarformulare ohne Benutzerinteraktion. Das NoBot-Steuerelement im ASP.NET AJAX Control Toolkit kann dazu beitragen, diese Bots zu bekämpfen.

Überblick

Automatisierte Bots pflastern Weblogs und andere Websites mit Spam und übermitteln Kommentarformulare ohne Benutzerinteraktion. Das NoBot-Steuerelement im ASP.NET AJAX Control Toolkit kann dazu beitragen, diese Bots zu bekämpfen.

Schritte

Ein gängiger Ansatz zum Besiegen von Bots ist die Verwendung von CAPTCHAs Completely Automated Public Turing Test, um Computer und Menschen voneinander zu unterscheiden. Ein Turing-Test war ursprünglich ein Test, bei dem jemand entscheiden musste, ob ein Kommunikationspartner ein Mensch oder eine Maschine ist. Im Web besteht ein CAPTCHA in der Regel aus einem Bild mit verzerrten Buchstaben. Die Idee ist, dass nur ein Mensch die Buchstaben auf dem Bild lesen kann, während OCR-Algorithmen fehlschlagen.

Dieser Ansatz hat mehrere Vor- und Nachteile, aber eine Diskussion darüber sprengt den Rahmen dieses Tutorials. Es gibt jedoch ein Steuerelement im ASP.NET AJAX Control Toolkit, das einen ähnlichen Ansatz bietet: NoBot. Es ist leichter zu überwinden als ein CAPTCHA, ist aber sehr einfach zu bedienen und ist sehr gut auf Websites wie Blogs, wo es als Erfolg gilt, wenn die meisten Spam-Versuche besiegt werden, was die NoBot Kontrolle tun kann.

NoBot fängt das Postback des aktuellen ASP.NET Webformulars ab, wenn mindestens eine der folgenden Bedingungen erfüllt ist:

  • Der Browser kann ein JavaScript-Puzzle nicht lösen (für instance, wenn JavaScript deaktiviert ist).
  • Der Benutzer hat das Formular an "fast" übermittelt.
  • Die Client-IP-Adresse hat das Formular in einem bestimmten Zeitraum zu oft übermittelt.

Um diese Bedingungen zu überprüfen, benötigt das NoBot Steuerelement diese Attribute (alle optional):

  • ResponseMinimumDelaySeconds Minimale Anzahl von Sekunden zwischen Postbacks
  • CutoffWindowSeconds Länge des Zeitintervalls, in dem Postbacks von einer IP-Adresse Measures sind
  • CutoffMaximumInstances maximale Anzahl von Sekunden pro Zeitintervall

Das folgende Markup erfordert, dass mindestens zwei Sekunden zwischen Postbacks vergehen und dass innerhalb eines Intervalls von 30 Sekunden nur fünf Oder weniger Postbacks vorhanden sind:

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

Stellen Sie dann wie üblich sicher, dass Sie die ScriptManager auf der Seite enthalten, damit die ASP.NET AJAX-Bibliothek geladen wird und das Control Toolkit verwendet werden kann:

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

Da die meisten Überprüfungen NoBot auf der Serverseite durchgeführt werden, müssen Sie das Ergebnis dieser Überprüfungen überprüfen. Dies kann durch Aufrufen NoBotder IsValid() -Methode erfolgen. Es verfügt über ein Argument (als out Parameter/ByRef Parameter), das vom Typ NoBotStateist. Die Zeichenfolgendarstellung enthält den Grund, warum die Überprüfung fehlschlägt und Valid andernfalls. Der folgende Code gibt eine Nachricht entsprechend dem NoBotErgebnis aus:

<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>

Schließlich benötigen Sie ein Formular zum Übermitteln und ein Label-Element, um die Nachricht auszugeben. Fertig!

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" />

Wenn Sie dieses Skript ausführen und JavaScript deaktivieren oder das Formular innerhalb der ersten zwei Sekunden senden oder das Formular siebenMal innerhalb von dreißig Sekunden übermitteln, erhalten Sie eine Fehlermeldung. Verwenden Sie dieses Steuerelement jedoch sinnvoll, da nur etwa 90-95 % der Benutzer JavaScript aktiviert haben, sodass 5-10 % der Benutzer den Test nicht ausführen NoBot.

Diese Fehlermeldung könnte von einem Bot verursacht worden sein.

Diese Fehlermeldung könnte von einem Bot verursacht worden sein (Klicken Sie, um das bild in voller Größe anzuzeigen).