Udostępnij za pośrednictwem


Zwalczanie botów (VB)

Autor: Christian Wenz

Pobierz plik PDF

Zautomatyzowane boty gips weblogów i innych witryn internetowych ze spamem, przesyłając formularze komentarzy bez interakcji z użytkownikiem. Kontrolka NoBot w zestawie narzędzi AJAX Control Toolkit ASP.NET może pomóc w walce z tymi botami.

Omówienie

Zautomatyzowane boty gips weblogów i innych witryn internetowych ze spamem, przesyłając formularze komentarzy bez interakcji z użytkownikiem. Kontrolka NoBot w zestawie narzędzi AJAX Control Toolkit ASP.NET może pomóc w walce z tymi botami.

Kroki

Jednym z typowych podejść do pokonania botów jest użycie testu CAPTCHAs Completely Automated Public Turing, aby poinformować komputery i ludzi od siebie. Test Turinga był pierwotnie testem, w którym ktoś musiał zdecydować, czy partner komunikacji jest człowiekiem, czy maszyną. W Internecie CAPTCHA zwykle składa się z obrazu z zniekształconymi literami. Chodzi o to, że tylko człowiek może odczytać litery na obrazie, podczas gdy algorytmy OCR nie powiedzą się.

Istnieje kilka zalet i wad tego podejścia, ale omówienie tego zagadnienia wykracza poza zakres tego samouczka. Istnieje jednak kontrolka w zestawie narzędzi AJAX Control Toolkit ASP.NET, która zapewnia podobne podejście: NoBot. Łatwiej jest pokonać niż CAPTCHA, ale jest bardzo łatwy w użyciu i taryfy bardzo dobrze na stronach internetowych, takich jak blogi, gdzie jest uważany za sukces, jeśli większość prób spamu zostaną pokonane, co NoBot kontrola może zrobić.

NoBot przechwytuje powrót bieżącego formularza ASP.NET sieci Web, jeśli spełniony jest co najmniej jeden z tych warunków:

  • Przeglądarka nie może rozwiązać zagadki języka JavaScript (na przykład po dezaktywacji języka JavaScript)
  • Użytkownik przesłał formularz do szybkiego
  • Adres IP klienta przesłał formularz zbyt często w określonym przedziale czasu.

Aby sprawdzić te warunki, kontrolka NoBot wymaga tych atrybutów (wszystkie z nich opcjonalne):

  • ResponseMinimumDelaySeconds minimalna ilość sekund między ogłaszaniem zwrotnym
  • CutoffWindowSeconds przedział czasu, w którym są miary ogłaszania zwrotnego z jednego adresu IP
  • CutoffMaximumInstances maksymalna ilość sekund na interwał czasu

Następujące adiustacje wymagają co najmniej dwóch sekund między ogłaszaniem zwrotnym i że istnieje tylko pięć ogłaszań zwrotnych lub mniej w ciągu 30 sekund interwału:

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

Następnie, jak zwykle, należy dołączyć element ScriptManager na stronie, aby biblioteka ASP.NET AJAX była załadowana i można użyć zestawu narzędzi Control Toolkit:

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

Ponieważ większość testów NoBot odbywa się po stronie serwera, należy sprawdzić wynik tych weryfikacji. Można to zrobić, wywołując NoBotmetodę "s IsValid() ". Ma jeden argument (jako out parametr/ByRef parametr), który jest typu NoBotState. Jego reprezentacja ciągu zawiera przyczynę niepowodzenia sprawdzania i Valid w przeciwnym razie. Poniższy kod zwraca komunikat zgodnie z NoBotwynikiem polecenia ":

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

Na koniec potrzebujesz formularza do przesłania i elementu etykiety, aby wyświetlić komunikat i wszystko jest gotowe!

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

Po uruchomieniu tego skryptu i dezaktywacji języka JavaScript lub przesłaniu formularza w ciągu pierwszych dwóch sekund lub przesłaniu formularza siedem razy w ciągu trzydziestu sekund zostanie wyświetlony komunikat o błędzie. Należy jednak mądrze użyć tej kontrolki, ponieważ tylko około 90–95% użytkowników ma aktywowany język JavaScript, dlatego 5–10% użytkowników zakończy się niepowodzeniem NoBottestu.

Ten komunikat o błędzie mógł być spowodowany przez bota

Ten komunikat o błędzie mógł być spowodowany przez bota (kliknij, aby wyświetlić obraz o pełnym rozmiarze)