Sdílet prostřednictvím


Boj s roboty (VB)

Christian Wenz

Stáhnout PDF

Automatizovaní roboti omítnou weblogy a další weby spamem a odesílají formuláře komentářů bez jakékoli interakce uživatele. Ovládací prvek NoBot v ASP.NET AJAX Control Toolkit může pomoct s těmito roboty bojovat.

Přehled

Automatizovaní roboti omítnou weblogy a další weby spamem a odesílají formuláře komentářů bez jakékoli interakce uživatele. Ovládací prvek NoBot v ASP.NET AJAX Control Toolkit může pomoct s těmito roboty bojovat.

Postup

Jedním z běžných přístupů k porážce robotů je použití zcela automatizovaného veřejného turingového testu CAPTCHAs k oddělování počítačů a lidí. Turingový test byl původně test, při kterém se někdo musel rozhodnout, jestli je komunikační partner člověk nebo stroj. Na webu se CAPTCHA obvykle skládá z obrázku s některými zkreslenými písmeny. Myšlenka je taková, že písmena na obrázku může číst jenom člověk, zatímco algoritmy OCR selžou.

Tento přístup má několik výhod a nevýhod, ale diskuze o tom je nad rámec tohoto kurzu. V ASP.NET AJAX Control Toolkit je však ovládací prvek, který poskytuje podobný přístup: NoBot. Je to jednodušší překonat než CAPTCHA, ale je velmi snadné použití a funguje velmi dobře na webových stránkách, jako jsou blogy, kde je považován za úspěch, pokud je většina pokusů o spam poražena, což NoBot kontrola může udělat.

NoBot zachytí postback aktuálního webového formuláře ASP.NET, pokud je splněna alespoň jedna z těchto podmínek:

  • Prohlížeč nedokáže vyřešit javascriptovou hádanku (například při deaktivaci JavaScriptu).
  • Uživatel odeslal formulář rychle.
  • IP adresa klienta odeslala formulář příliš často v určitém časovém období.

Aby bylo možné tyto podmínky zkontrolovat, NoBot ovládací prvek vyžaduje tyto atributy (všechny jsou volitelné):

  • ResponseMinimumDelaySeconds minimální doba sekund mezi postbacky
  • CutoffWindowSeconds délka časového intervalu, ve kterém jsou postbacky z jedné IP adresy míry
  • CutoffMaximumInstances maximální počet sekund za časový interval

Následující přirážka vyžaduje, aby mezi postbacky uplynuly alespoň dvě sekundy a aby během 30sekundového intervalu bylo pouze pět nebo méně postbacků:

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

Pak jako obvykle nezapomeňte zahrnout ScriptManager na stránku, aby se načetla knihovna AJAX ASP.NET a bylo možné použít sadu Control Toolkit:

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

Vzhledem k tomu, že většina kontrol NoBot probíhá na straně serveru, musíte zkontrolovat výsledek těchto ověření. To lze provést voláním NoBotmetody 's IsValid() . Má jeden argument (jako out parametr neboByRef parametr), který je typu NoBotState. Jeho řetězcová reprezentace obsahuje důvod, kdy kontrola selže a Valid jinak. Následující kód vypíše zprávu podle NoBotvýsledku:

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

Nakonec potřebujete formulář k odeslání a element label pro výstup zprávy a máte hotovo!

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

Když spustíte tento skript a deaktivujete JavaScript nebo odešlete formulář během prvních dvou sekund nebo odešlete formulář sedmkrát do třiceti sekund, zobrazí se chybová zpráva. Tento ovládací prvek ale používejte moudře, protože JavaScript má aktivované jenom asi 90–95 % uživatelů, a proto 5–10 % uživatelů test selže NoBot.

Tuto chybovou zprávu mohl způsobit robot.

Tuto chybovou zprávu mohl způsobit robot (kliknutím zobrazíte obrázek v plné velikosti).