On selline tabelmuutuja
DECLARE @tulem TABLE ( WORKER NVARCHAR(40) COLLATE DATABASE_DEFAULT, HOUSES_GROUPS_ID INT, TOTAL INT DEFAULT 0)
ja esialgne päring annab tabeli sisuks
aga vaja näidata ka puuduolevaid 0 ridu, ehk saada selline tulemus
ehk lisame KAMPUS_OLLE-le puudu oleva HOUSES_GROUPS_ID 42 korral koguse 0
MERGE lause võib olla selline:
MERGE @tulem AS Target
USING ( SELECT DISTINCT WK.WORKER, HG.HOUSES_GROUPS_ID FROM @tulem WK CROSS APPLY ( SELECT DISTINCT HOUSES_GROUPS_ID FROM @tulem ) AS HG
) AS Source (WORKER, HOUSES_GROUPS_ID) ON (Target.HOUSES_GROUPS_ID = Source.HOUSES_GROUPS_ID AND Target.WORKER = Source.WORKER)
WHEN NOT MATCHED BY TARGET THEN
INSERT (HOUSES_GROUPS_ID, WORKER) VALUES (Source.HOUSES_GROUPS_ID, Source.WORKER);
Sisemine päring MERGE lauses:
SELECT DISTINCT WK.WORKER, HG.HOUSES_GROUPS_ID FROM @tulem WK CROSS APPLY ( SELECT DISTINCT HOUSES_GROUPS_ID FROM @tulem ) AS HG
annab WORKER ja HOUSES_GROUPS_ID ristkorrutise
ja sealt mestib WHEN NOT MATCHED puuduolevad lisaks algsesse tabelisse.
Kuna @tulem TOTAL INT DEFAULT 0 vaikeväärtus on 0 pannakse see ka vaikimisi puuduvatele väärtuseks
reede, 5. oktoober 2012
kolmapäev, 26. september 2012
Firefox 15.0.1 ja Eesti ID-kaart
Peale Firefoxi uuendamist ei pruugi ID-kaart enam töötada.
Näiteks pillub viga Veakood: ssl_error_handshake_failure_alert
Taas käima saamiseks kontrolli menüüst
Tööriistad -> Lisad -> Laiendused menüüst üle, et "Estonian ID- card PKCS 11 module loader" oleks lubatud
Näiteks pillub viga Veakood: ssl_error_handshake_failure_alert
Taas käima saamiseks kontrolli menüüst
Tööriistad -> Lisad -> Laiendused menüüst üle, et "Estonian ID- card PKCS 11 module loader" oleks lubatud
esmaspäev, 24. september 2012
trace.axd piirangu reegel UrlScani jaoks
trace.axd on fail mida võib pärida, et saada infot ASP.NET veebirakenduse parameetrite ja muutujate kohta.
Igaks juhuks võib UrlScan-iga trace.axd pärimise tõkestada et vältida selle pahatahtlikku kasutamist.
Reeglistik koosneks urlscan.ini failis järgmistest komponentidest :
RuleListi kaasame uue lisatava KeelatudAxd reegli
RuleList=SQLSystimine,XSSSystimine,KeelatudAxd
KeelatudAxd reeglis määrame ära, et skaneerime Url-ipealt ning mõjub *.axd failidele ja viitame AxdKeelatud nimekirjale
;reegel *.axd failide jaoks
[KeelatudAxd]
AppliesTo=.axd
DenyDataSection=AxdKeelatud
ScanUrl=1
DenyUnescapedPercent=1
DenyDataSection nimekirjas loetleme ülesse axd failid mille poole pöördumise keelame
;ei luba pärida trace.axd faili
[AxdKeelatud]
trace.axd
UrlScan logifailis näeb trace.axd faili poole pöördumise tõkestamine välja niimoodi
GET /trace.axd Rejected rule+'KeelatudAxd'+triggered URL - trace.axd
Igaks juhuks võib UrlScan-iga trace.axd pärimise tõkestada et vältida selle pahatahtlikku kasutamist.
Reeglistik koosneks urlscan.ini failis järgmistest komponentidest :
RuleListi kaasame uue lisatava KeelatudAxd reegli
RuleList=SQLSystimine,XSSSystimine,KeelatudAxd
KeelatudAxd reeglis määrame ära, et skaneerime Url-ipealt ning mõjub *.axd failidele ja viitame AxdKeelatud nimekirjale
;reegel *.axd failide jaoks
[KeelatudAxd]
AppliesTo=.axd
DenyDataSection=AxdKeelatud
ScanUrl=1
DenyUnescapedPercent=1
DenyDataSection nimekirjas loetleme ülesse axd failid mille poole pöördumise keelame
;ei luba pärida trace.axd faili
[AxdKeelatud]
trace.axd
UrlScan logifailis näeb trace.axd faili poole pöördumise tõkestamine välja niimoodi
GET /trace.axd Rejected rule+'KeelatudAxd'+triggered URL - trace.axd
kolmapäev, 12. september 2012
SQL SERVER SELECT päringu parametriseeritud järjestamine erinevate andmetüüpide korral
Andmebaasi tabelis on väli text_id INT tüüpi ja title_text NVARCHAR(1000).
Kui nüüd vaja salvestatud protseduuris parameetrina ette anda mis järjestuses andmeid kätte saada tahetakse
ALTER PROCEDURE [dbo].[TEXT_ROLES_KUIDO_S]
@sortorder TINYINT=0 --0 NIME JÄRGI 1-ID JÄRGI
AS
BEGIN
SET NOCOUNT ON
SELECT [text_id],[title_text] FROM [dbo].[TEXT_TITLES]
ORDER BY CASE WHEN @sortorder = 0 THEN title_text ELSE text_id END
END
siis selline lähenemine annab veateate @sortorder = 0 korral
Conversion failed when converting the nvarchar value 'Mingi tekst' to data type int.
kuna title_text-i hakatake INT andmetüübiks pöörama. Veast saab lahti, kui ORDER BY kirjutada järgmiselt
SELECT [text_id],[title_text] FROM [dbo].[TEXT_TITLES]
ORDER BY CASE WHEN @sortorder = 0 THEN title_text END ,
CASE WHEN @sortorder = 1 THEN text_id END
Kui nüüd vaja salvestatud protseduuris parameetrina ette anda mis järjestuses andmeid kätte saada tahetakse
ALTER PROCEDURE [dbo].[TEXT_ROLES_KUIDO_S]
@sortorder TINYINT=0 --0 NIME JÄRGI 1-ID JÄRGI
AS
BEGIN
SET NOCOUNT ON
SELECT [text_id],[title_text] FROM [dbo].[TEXT_TITLES]
ORDER BY CASE WHEN @sortorder = 0 THEN title_text ELSE text_id END
END
siis selline lähenemine annab veateate @sortorder = 0 korral
Conversion failed when converting the nvarchar value 'Mingi tekst' to data type int.
kuna title_text-i hakatake INT andmetüübiks pöörama. Veast saab lahti, kui ORDER BY kirjutada järgmiselt
SELECT [text_id],[title_text] FROM [dbo].[TEXT_TITLES]
ORDER BY CASE WHEN @sortorder = 0 THEN title_text END ,
CASE WHEN @sortorder = 1 THEN text_id END
SQL SERVER XML andmetüübi pööramine VARCHAR(MAX)
Kui XML andmetüübi pööramisel VARCHAR(MAX) võib hakata pilduma viga
Conversion of one or more characters from XML to target collation impossible
DECLARE @tulem VARCHAR(MAX), @xmlMuutuja
SET @xmlMuutuja= ... Mingi XML tüüpi väärtus
Viga ilmneb järgneval tüübiteisendamisel
SET @tulem=CAST(@xmlMuutuja AS VARCHAR(MAX))
siis veast saab lahti kui kõigepealt pöörata NVARCHAR(MAX) ja peale seda VARCHAR(MAX)
SET @tulem=CAST(CAST(@xmlMuutuja AS NVARCHAR(MAX)) AS VARCHAR(MAX))
Conversion of one or more characters from XML to target collation impossible
DECLARE @tulem VARCHAR(MAX), @xmlMuutuja
SET @xmlMuutuja= ... Mingi XML tüüpi väärtus
Viga ilmneb järgneval tüübiteisendamisel
SET @tulem=CAST(@xmlMuutuja AS VARCHAR(MAX))
siis veast saab lahti kui kõigepealt pöörata NVARCHAR(MAX) ja peale seda VARCHAR(MAX)
SET @tulem=CAST(CAST(@xmlMuutuja AS NVARCHAR(MAX)) AS VARCHAR(MAX))
reede, 27. juuli 2012
IIS veebiserveri SK sertifikaadid ID-kaardiga autentimiseks
Selleks, et ASP.NET Request.ClientCertificate peale hakkaks IIS7 veebirakenduses koos SK poolt antud veebiserveri sertifikaadiga küsima ka Eesti ID-kaardi PIN koodi ei piisa ainult sellest, kui oled Sertifitseerimiskeskuse veebiserveri sertifikaadid paigaldanud nii nagu nõutud vaid tuleb ka Intermediate Certification Authorities lisada ESTEID-SK 2011 ja EE Certification Centre Root CA sertifikaat
Kogu vajalik sertifikaatide majandus IIS7/IIS6 peal on siis järgmine:
Ava serveri käsurealt mmc Microsoft Management Console ja menüüs File -> Add/remove Snap-In lisa Certificates (Local Computer)
Trusted Root Certification Authorities:
(SK repo kodulehelt http://www.sk.ee/repositoorium/sk-sertifikaadid/ sertifikaadid Juur-SK ja EE Certification Centre Root CA )
Intermediate Certification Authorities:
(SK repo kodulehelt http://www.sk.ee/repositoorium/sk-sertifikaadid/ sertifikaadid ESTEID-SK 2011 ja KLASS3-SK 2010 )
IIS-is tuleb ASPX lehe Features View peal ära määrata SSL seadetes kas aktsepteerida või nõuda kliendi sertifikaati ja veebilehe code-behind võiks välja näha selliselt:
if (!Page.IsPostBack)
{
HttpClientCertificate sert = Request.ClientCertificate; //küsib kliendi sertifikaati(PIN koodi aken tuleb ette)
if (sert.IsPresent) //kas sai sertifikaadi kätte
{
if (System.DateTime.Now < sert.ValidUntil) //kas kliendi sertifikaat on kehtiv
{ //tee nüüd midagi kättesaadud infoga sertifikaadilt
NB! Kui tekib probleem "vanade" uuendamata sertifikaatidega ID-kaartide kasutamisel, ehk peale PIN koodi sisestamist ilmub näiteks Firefoxil veateade
Siis tuleb Intermediate Certificates Authorities laadida ka ESTEID-SK 2007.
Kogu vajalik sertifikaatide majandus IIS7/IIS6 peal on siis järgmine:
Ava serveri käsurealt mmc Microsoft Management Console ja menüüs File -> Add/remove Snap-In lisa Certificates (Local Computer)
Trusted Root Certification Authorities:
(SK repo kodulehelt http://www.sk.ee/repositoorium/sk-sertifikaadid/ sertifikaadid Juur-SK ja EE Certification Centre Root CA )
Intermediate Certification Authorities:
(SK repo kodulehelt http://www.sk.ee/repositoorium/sk-sertifikaadid/ sertifikaadid ESTEID-SK 2011 ja KLASS3-SK 2010 )
IIS-is tuleb ASPX lehe Features View peal ära määrata SSL seadetes kas aktsepteerida või nõuda kliendi sertifikaati ja veebilehe code-behind võiks välja näha selliselt:
if (!Page.IsPostBack)
{
HttpClientCertificate sert = Request.ClientCertificate; //küsib kliendi sertifikaati(PIN koodi aken tuleb ette)
if (sert.IsPresent) //kas sai sertifikaadi kätte
{
if (System.DateTime.Now < sert.ValidUntil) //kas kliendi sertifikaat on kehtiv
{ //tee nüüd midagi kättesaadud infoga sertifikaadilt
NB! Kui tekib probleem "vanade" uuendamata sertifikaatidega ID-kaartide kasutamisel, ehk peale PIN koodi sisestamist ilmub näiteks Firefoxil veateade
The
page requires a valid SSL client certificate
Your
client certificate is untrusted or invalid. A Secure Sockets Layer (SSL)client
certificate is used for identifying you as a valid user of the resource.
HTTP Error 403.16
- Forbidden: Client certificate is ill-formed or is not trusted by the Web
server.
Internet Information Services (IIS)
Internet Information Services (IIS)
esmaspäev, 11. juuni 2012
httpCookies domain
Kui saad ASP.NET rakenduse paigaldamisel sellise veateate:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster,
ensure that <machineKey> configuration specifies the same validationKey and validation algorithm.
AutoGenerate cannot be used in a cluster
ensure that <machineKey> configuration specifies the same validationKey and validation algorithm.
AutoGenerate cannot be used in a cluster
Siis põhjuseks võib olla ka see, et web.config failis on http küpsisele seatud peale domeeni piirang
<httpCookies httpOnlyCookies="true" domain="www.minuveeb.ee" />
ja see piirang ei pruudi kokku langeda veebiserveri sertifikaadiga https protokolli jaoks(pole õige)
httpCookie domain piirab ära mis domeenil veebirakenduse küpsist kasutada saab mis annab täiendava kaitse seansirünnakute vastu
esmaspäev, 2. aprill 2012
Räsitabeli kollisioonirünnaku kõrvalmõjud, MS11-100 värskendus
Räsitabeli kollisioonirünnaku turbepaketi MS11-100 kõrvalmõjuna ei pruugi ASP.NET rakendused
enam töötada nii nagu varem, ilmsiks võib see tulla "pikkade nimekirjadega" veebilehtede puhul kus peale turbevärskenduse paigaldamist enam asjad endist viisi ei tööta
Põhjuseks see, et POST parameetrite võtmepaaride arvule on pandud piirang peale.
http://support.microsoft.com/kb/2661403
Käima saab asjad jälle nii, et tuleb web.config failis aspnet:MaxHttpCollectionKeys väärtust suurendada, vaikimisi on see 1000
http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf
enam töötada nii nagu varem, ilmsiks võib see tulla "pikkade nimekirjadega" veebilehtede puhul kus peale turbevärskenduse paigaldamist enam asjad endist viisi ei tööta
Põhjuseks see, et POST parameetrite võtmepaaride arvule on pandud piirang peale.
http://support.microsoft.com/kb/2661403
Käima saab asjad jälle nii, et tuleb web.config failis aspnet:MaxHttpCollectionKeys väärtust suurendada, vaikimisi on see 1000
JSON deserialiseerimise korral on parameetriks<configuration> <appSettings> <add key="aspnet:MaxHttpCollectionKeys" value="1000" /> </appSettings> </configuration>
Rünnaku matemaatika on kirjeldatud Crosby ja Wallachi poolt aastal 2003aspnet:MaxJsonDeserializerMembers
http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf
neljapäev, 12. jaanuar 2012
AntiXSS 4.2 teegi uuendamisprobleem
Võib juhtuda, et AntiXSS library 4.2 mis 10.jaanuaril 2012 veaparandusteatega välja tuli hakkab rakenduses peale värskendamist kisama:
Üks veapõhus võib olla see, et teegi seadetes
on faili Original filename AntiXSSLibrary40.dll aga fail ise ketta peal AntiXSSLibrary.dll.
Kui muu ei aita nimeta fail ümber AntiXSSLibrary40.dll - ks, värskenda viited, saad veateatest lahti ja rakendus töötab edasi
..AntiXSS .. The located assembly's manifest definition does not match the assembly reference ..
ja probleemist ei saa lahti ei viidete(reference) eemaldamise ega värskendamisegaÜks veapõhus võib olla see, et teegi seadetes
on faili Original filename AntiXSSLibrary40.dll aga fail ise ketta peal AntiXSSLibrary.dll.
Kui muu ei aita nimeta fail ümber AntiXSSLibrary40.dll - ks, värskenda viited, saad veateatest lahti ja rakendus töötab edasi
Tellimine:
Postitused (Atom)