Ei meeldi .NET-ile pp.kk.aaaa kuupäeva formaat, igalt poolt võib hakata exceptioneid pilduma, usaldusväärsust lisab fikseeritud formaatidega tüübipööramine
string kuupaevatekst="23.10.2010";
DateTime arvekuupaev;
string[] formaat = new string[4];
formaat[0] = "yyyy-MM-dd"; //.NET standardformaat
formaat[1] = "MM.dd.yyyy";
formaat[2] = "dd.MM.yyyy"; //meie kullakallis pp.kk.aaaa
formaat[3] = "yyyyMMdd"; /ISO8601 see töötab alati nii .NET kui SQL SERVER
if (!System.DateTime.TryParseExact(kuupaevatekst, formaat, System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out arvekuupaev))
{
throw new InvalidOperationException("Error !! kuupäev " + kuupaevatekst+ " pole sobivas formaadis");
}
ja töötab palju paremini
arvekuupaev siin on nüüd kuupäevaks teisendatud string
esmaspäev, 11. oktoober 2010
teisipäev, 5. oktoober 2010
GetSafeHtmlFragment AntiXSS 4.0 Librarys on nüüd Sanitizer klassis
Valget nimekirja kasutavas Anti-Cross Site Scripting Library V4.0
http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651
on GetSafeHtmlFragment meetod nüüd Sanitizer klassis endise AntiXss klassi asemel.
Sanitizer klassi meetodid GetSafeHtml ja GetSafeHtmlFragment vaatavad sisendit
Principle of Inclusions põhimõtte järgi ja kui leitakse midagi, mis ei ole valges nimekirjas siis tõmmatakse väljundist maha
Näiteks varjestamist vajavast tekstist
Salakood <script type="text/javascript">prompt('Sisesta PIN kood'); </script>
jätab GetSafeHtmlFragment alles ainult Salakood osa
GetSafeHtml aga teeb
<html>
<body>
Salakood
</body>
</html>
HTML-i
Kasutamiseks lisa viited DLL -idele HtmlSanitizationLibray ja AntiXSSLibrary
Koodis kasuta
Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(Eval("textboxtest").ToString())
http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651
on GetSafeHtmlFragment meetod nüüd Sanitizer klassis endise AntiXss klassi asemel.
Sanitizer klassi meetodid GetSafeHtml ja GetSafeHtmlFragment vaatavad sisendit
Principle of Inclusions põhimõtte järgi ja kui leitakse midagi, mis ei ole valges nimekirjas siis tõmmatakse väljundist maha
Näiteks varjestamist vajavast tekstist
Salakood <script type="text/javascript">prompt('Sisesta PIN kood'); </script>
jätab GetSafeHtmlFragment alles ainult Salakood osa
GetSafeHtml aga teeb
<html>
<body>
Salakood
</body>
</html>
HTML-i
Kasutamiseks lisa viited DLL -idele HtmlSanitizationLibray ja AntiXSSLibrary
Koodis kasuta
Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(Eval("textboxtest").ToString())
kolmapäev, 29. september 2010
MS10-070 ASP.NET Padding Oracle turvapaik muudab IIS7 peal ScriptResource.axd ja WebResource.axd pöördumise URL-i pikemaks
Peale patchi rakendamist, ei pruugi veebirakendus enam töödata
http://www.dt.ee/blog/kood/net/2010/09/kriitilise-tahtsusega-turvapaik-aspnet-jaoks
Muudatus, mis patchiga tuleb on see, et kui kasutad RequestFilteringi siis suurenda MaxUrli pikkust. WebResource.axd ja ScriptResource.axd poole pöördumised on nüüd pikemad
<location path="WebResource.axd">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="230" />
</requestFiltering>
</security>
</system.webServer>
</location>
<location path="ScriptResource.axd">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="230" />
</requestFiltering>
</security>
</system.webServer>
</location>
http://www.dt.ee/blog/kood/net/2010/09/kriitilise-tahtsusega-turvapaik-aspnet-jaoks
Muudatus, mis patchiga tuleb on see, et kui kasutad RequestFilteringi siis suurenda MaxUrli pikkust. WebResource.axd ja ScriptResource.axd poole pöördumised on nüüd pikemad
<location path="WebResource.axd">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="230" />
</requestFiltering>
</security>
</system.webServer>
</location>
<location path="ScriptResource.axd">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="230" />
</requestFiltering>
</security>
</system.webServer>
</location>
teisipäev, 21. september 2010
Pimesüstimisautomaadi takistamine veateate edastamise juhusliku viivitamisega
Blind Injection (pimesüstimine) on meetod kus serverisse saadud päringu vastusest ei loe otse välja sind huvitavat infot vaid selle teadasaamiskes tuleb kasutada meetodid, kus näiteks kontrollitakse, kas veateade tuli või ei tulnud.
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)
{
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
neljapäev, 19. august 2010
Mitte iga pakkfaili op.süsteemi käsurea käsku ei saa SQL SERVER-i tööna jooksutada
Vaja näiteks andmebaasi tööna käima tõmmata pakkfail.
Seadistab SQL Server Agent-i alt töö ära Type = Operating System (CmdExec) ja tõmbab pakkfaili sisu Command aknasse sisse (asja mõte kustutada D:\TEMP kataloogist kõid PDF ja DOC failid)
d:
cd \temp
del *.pdf
del *.doc
aga töö jooksutamisel tuleb selline viga ette
The process could not be created for step 1 of job 0x... (reason: 5). The step failed.
Kui nüüd teha SQL Server Agent-ile proxy ja mandaat ja käivitada töö sobiva kasutaja õigusega saad ikka sama vea
Häda selles, et Server Agentile kõik käsurea asjad ka seeditavad pole, ehk
d:
mis muidu vahetab käsureal kettaseadet aga SQL Server Agentile kohe mitte ei meeldi ja veateadet pillubki
Lahendus 1 (kustuta otse kataloogi nime ette andes)
del d:\temp\*.pdf
del d:\temp\*.doc
Lahendus 2 (tee kettaseadme vahetus cd käsuga)
cd d:
cd \temp
del *.pdf
del *.doc
Seadistab SQL Server Agent-i alt töö ära Type = Operating System (CmdExec) ja tõmbab pakkfaili sisu Command aknasse sisse (asja mõte kustutada D:\TEMP kataloogist kõid PDF ja DOC failid)
d:
cd \temp
del *.pdf
del *.doc
aga töö jooksutamisel tuleb selline viga ette
The process could not be created for step 1 of job 0x... (reason: 5). The step failed.
Kui nüüd teha SQL Server Agent-ile proxy ja mandaat ja käivitada töö sobiva kasutaja õigusega saad ikka sama vea
Häda selles, et Server Agentile kõik käsurea asjad ka seeditavad pole, ehk
d:
mis muidu vahetab käsureal kettaseadet aga SQL Server Agentile kohe mitte ei meeldi ja veateadet pillubki
Lahendus 1 (kustuta otse kataloogi nime ette andes)
del d:\temp\*.pdf
del d:\temp\*.doc
Lahendus 2 (tee kettaseadme vahetus cd käsuga)
cd d:
cd \temp
del *.pdf
del *.doc
teisipäev, 17. august 2010
pages smartNavigation="True" IE8-ga enam ei tööta
Juba alates .NET 2.0 on smartNavigation="True" direktiiv ebasoovitav aga ASP.NET 4.0 ja IE8 teeb nüüd web.config failis pages sektsioonis smartNavigation="True" kasutamise võimatuks, kuna IE8 sirvides veebilehed enem ei tööta ja loobivad erinevaid vigu ette.
Samas Firefox, Opera, Safari ei kobise smartNavigation="True" peale midagi.
Lahendus on kasutada uuemat direktiivi maintainScrollPositionOnPostBack="True"
Samas Firefox, Opera, Safari ei kobise smartNavigation="True" peale midagi.
Lahendus on kasutada uuemat direktiivi maintainScrollPositionOnPostBack="True"
reede, 6. august 2010
VisualStudio 2010 debugeri käima ajamine JavaScripti jaoks IE8-ga
Kui mingil põhjusel ei debugi JavaScripti VisualStudio 2010 all ja oled kontrollinud
,et nii IE8 seadetest Options -> Advanced -> Browsing -> märkeruut "Disable Script debugging" on maha võetud ja VisualStudio2010 Solution Property Pages -> Start Options on degugimine märgitud nii nagu vaja aga ikka keeldub JavaScripti silumast võib abi olla sõna
"debugger" kirjutamisest otse JavaScripti koodi no näiteks nii
function onSucceed(result, userContext, methodname) {
debugger;
if (KOnimet != null) {
KOnimet.value = result;
}
else {
if (result.length > 0) {
alert(result);
}
}
}
,et nii IE8 seadetest Options -> Advanced -> Browsing -> märkeruut "Disable Script debugging" on maha võetud ja VisualStudio2010 Solution Property Pages -> Start Options on degugimine märgitud nii nagu vaja aga ikka keeldub JavaScripti silumast võib abi olla sõna
"debugger" kirjutamisest otse JavaScripti koodi no näiteks nii
function onSucceed(result, userContext, methodname) {
debugger;
if (KOnimet != null) {
KOnimet.value = result;
}
else {
if (result.length > 0) {
alert(result);
}
}
}
Tellimine:
Postitused (Atom)