reede, 29. oktoober 2010

AjaxToolkit NotBot extender näitab osadele BruteForce tööriistadele trääsa

Alates ASP.NET 3.5 versioonist ka Ajax NotBot extender olemas. Kasutada saab näiteks BruteForce tööriistade vastu, mis salasõnade äraarvamisega süsteemi sisse pääseda püüavad.

Päringute arve piiramine(RequestRateLimiting) aitab ka siin nagu tavaliselt alati.

Peale extenderi vormile lohistamist saab mängida peamiselt kolme parameetriga

ResponseMinimumDelaySeconds="3" tähendab seda, et peale veebivormi avanemist(allalaadimist) peab ootama 3 sekundit ennem kui PostBack serveri poolt töötlemisele võetakse

CutoffMaximumInstances="8" ja CutoffWindowSeconds="50" määravad ära, et "luba 50 sekundi jooksul ainult 8 korda PostBack-i teha". Maakeeli tähendab seda, et 50 sekundi jooksul saab ainult 8 korda salasõna äraarvamist proovida


Code-behindi võib näiteks teha niimoodi (soovitav lisada ka veateate hägustamise osa)

protected void ButtonLogin_Click(object sender, EventArgs e)
{

AjaxControlToolkit.NoBotState nbstate;
if (!this.NoBot1.IsValid(out nbstate))
{
switch (nbstate)
{
case AjaxControlToolkit.NoBotState.InvalidResponseTooSoon: //liiga vara sisestati peale vormi laadimist
{
this.CustomValidatorLoginFailed.ErrorMessage = "Liiga kiiresti alustasite";
break;
}
case AjaxControlToolkit.NoBotState.InvalidAddressTooActive: //liiga kiiresti sisestatakse lubatud ajavahemiku jooksul
{
this.CustomValidatorLoginFailed.ErrorMessage = "Liiga sageli proovite";
break;
}
default:
{
this.CustomValidatorLoginFailed.ErrorMessage = "BotRobot " + nbstate;
break;

}
}
this.CustomValidatorLoginFailed.IsValid = false;
return;
}
//siit saati võib nüüd päringut töötlema asuda
}