Boj s roboty (VB)
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 postbackyCutoffWindowSeconds
délka časového intervalu, ve kterém jsou postbacky z jedné IP adresy míryCutoffMaximumInstances
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 NoBot
metody '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 NoBot
vý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 (kliknutím zobrazíte obrázek v plné velikosti).