Pimesüstimise erijuhtum on ajaliselt vastuse saabumise mõõtmine.
Mõned SQL pimesüstimise meetodid on mul kirjeldatud Arvutimaailma artiklis
www.am.ee/sql
Ründaja elu saab raskemaks teha, kui panna teatud juhuslikkus sisse veateate tagastamisse, ehk
web.config failis otsib rida customErrors, kus vigade korral suunab endatehtud veateadete veebilehele,
customErrors defaultRedirect="MinuError.aspx" redirectMode="ResponseRewrite"
MinuError.aspx on veebileht, kuhu kasutaja vea ilmumisel suuname ja sinna ehitab sisse
juhusliku ajalise viivitamise Page_Load meetodisse
//kõigepealt püüab veateate kinni
Exception ex = Server.GetLastError().GetBaseException();
if (ex != null)
{
//tark on veateated kodeerida XSS rünnakute vastu
this.LiteralViga.Text = Server.HtmlEncode(ex.Message.Trim());
// see osa teeb veateate andmisel juhusliku ajalise viivituse, et vältida veateadete vastuste põhjal andmete leket pimesüstimise meetodit kasutades
//veateate vastuse saadame tagasi teatud juhtudel juhusliku pausi järel
byte[] delay = new byte[1];
System.Security.Cryptography.RandomNumberGenerator rnd = new System.Security.Cryptography.RNGCryptoServiceProvider();
rnd.GetBytes(delay);
int viiv = (int)delay[0];
if (viiv < 25) //veateadet ei saada kohe vaid teeb juhusliku pikema ajalise pausi sisse mõningatel juhtudel
{
viiv=viiv*666; //ka mina olen kuri :)
System.Threading.Thread.Sleep(viiv);
IDisposable disposable = rnd as IDisposable;
if (disposable != null)
{ disposable.Dispose(); } //mälu vabaks
}
}
Alati võib ise mõelda välja parema juhusliku numbri genereerimise meetodi ja otsustada kuna viivitust rakendada
this.LiteralViga.Text = Server.HtmlEncode(ex.Message.Trim());
// see osa teeb veateate andmisel juhusliku ajalise viivituse, et vältida veateadete vastuste põhjal andmete leket pimesüstimise meetodit kasutades
//veateate vastuse saadame tagasi teatud juhtudel juhusliku pausi järel
byte[] delay = new byte[1];
System.Security.Cryptography.RandomNumberGenerator rnd = new System.Security.Cryptography.RNGCryptoServiceProvider();
rnd.GetBytes(delay);
int viiv = (int)delay[0];
if (viiv < 25) //veateadet ei saada kohe vaid teeb juhusliku pikema ajalise pausi sisse mõningatel juhtudel
{
viiv=viiv*666; //ka mina olen kuri :)
System.Threading.Thread.Sleep(viiv);
IDisposable disposable = rnd as IDisposable;
if (disposable != null)
{ disposable.Dispose(); } //mälu vabaks
}
}
Alati võib ise mõelda välja parema juhusliku numbri genereerimise meetodi ja otsustada kuna viivitust rakendada