Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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é):
-
ResponseMinimumDelaySecondsminimální doba sekund mezi postbacky -
CutoffWindowSecondsdélka časového intervalu, ve kterém jsou postbacky z jedné IP adresy míry -
CutoffMaximumInstancesmaximá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 (kliknutím zobrazíte obrázek v plné velikosti).