Zwalczanie botów (VB)
Autor: Christian Wenz
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 zwrotnymCutoffWindowSeconds
przedział czasu, w którym są miary ogłaszania zwrotnego z jednego adresu IPCutoffMaximumInstances
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 NoBot
metodę "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 NoBot
wynikiem 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 NoBot
testu.
Ten komunikat o błędzie mógł być spowodowany przez bota (kliknij, aby wyświetlić obraz o pełnym rozmiarze)