The PIT
Röster från ITM-koncernen.

SLAO-Mötet i Åre

May 4, 2009 11:38 by Gunther Schmidt

I år deltog Skibar Systems AB för första gången på SLAO-mötet.

Att aktörerna i Skid-branschen är ett glatt gäng är det inte någon tvekan om. För mig har det varit en fantastikt introduktion in i branschen, att hitta ansiktet till namnet och få tillfälle att träffa människan bakom namnet också. Folke och jag träffade en del äldre bekanta och han knyta nya kontakter. En viktig ny kontakt som vi han knyta är till den Isländska Liftanlägnningarnas Förbund, då det även finns intresse för vår V2-system. På vägen hem besökte vi även en del gamla och nya kunder längs vägen, även en del prospects. 

Det var säkert inte den sista gången vi åkte till SLAO-mötet. 

Gunther


Snack om säkerhet

February 18, 2009 15:05 by Gunther Schmidt

Jag fick uppgiften att bygga en lösenordstillgång till ett affärssystem. Vi bestämde oss för att hasha lösenorden och lagra hashen i databasen.

Exempel:
Lösenord i normaltext: "Kalle Anka"
Lösenord i hashkod: "4ec33c4d232199fea31216e94e17ec28"

Här har vi använt en så kallad MD5-algoritm som kan implementeras med system.security.crypography.  Eftersom sådana lösenord är svårtsmälta, sa är det ju ingenting som visas för användaren. De lagras enbart i databasen där den sedan jämförs med det som en användare knappar in som lösenord när denne loggar in.När lösenordet skickas från inloggningssidan så räknar en funktion fram hash-koden av det lösenordet som precis blev inknappat och den jämförs med den hashkod som är sparad i databas.

Två saker behöver man tänka på

1. Hashningen händer i code-behind-sidan, dvs vi skickar lösenordet okrypterad till servern.
Man kan kryptera lösenordet redan på klientsidan med JavaScript men det blir nästa steg. I vårt fall så använder vi https och då är ju informationen krypterad ”by default”. Man bör dock tänka på att en del exploits utnyttjar svagheter i browsern och teoretiskt sett kan ett script ligga och plocka okrypterade lösenord som skickas mellan server/klient eller som lagras i kakor/formfält.

2. Lösenordet är inte återställningsbart, om man tappar bort sitt lösenord så kan man inte få tillbaka det. Man måste välja ett nytt. Eftersom vi inte lagrar lösenordet i databasen utan enbart hashen för lösenordet så finns det inga möjligheter att skicka ut mail med kontouppgifter till användaren.

Däremot så kan man skicka ut återställnings-epost till användarens e-post-adress. Det ger användaren en chans att skriva in ett nytt lösenord som sedan hashas och lagras i databasen. Återställnings-epost skickas enbart ut till användarens kända e-post-adress. Har användaren bytt e-postadress så måste man identifiera sig på ett annat sätt, i interna företagssystem där alla känner varandra är det inga problem att hantera, värre är det på stora communityn, förlorar man tillgången till sin e-postadress och tappar lösenordet så är chansen väldigt liten att man får återställa sitt konto utan man blir av med det helt enkelt.

Men det finns ju även fördelar

1. Det fantastiska med det är ju att det inte går att räkna fram lösenordet bakvänt*. Alla som kan komma åt en databas, i rätt syfte eller vid intrång, kan inte längre se lösenordet som är knuten till ett inloggningskonto.

2. Finns säkert fler fördelar, dem kan ni räkna ut själv. 

Brutal force då?

*Nu är det ju så att det går att attackera detta med brute force och rainbow-tabeller och färdiga hashlistor/siter. Har en hacker kommit åt en databas med hashade lösenord så kan de jämföra hasharna med redan crackade hashar, de kan låta program gissa olika lösenord (brutal force) tills hashen hittas.

Om den finns med, sa kvarstår det bara att knappa in det lösenordet och så är hackern där han inte borde vara. Problemet med det här är att om du bara har 5 tecken i ditt lösenord, bara bokstäver, inga specialtecken, så tar det bara några sekunder för brutal-force-programmet att generera alla varianter av lösenord som innehåller 5 tecken och skapa hashkoder av dessa och sedan jämföra mot hashen i databasen.

Så vad gör man för att motverka detta då?

Man kan inte begära av användaren att han måste ha ett 25-tecken långt lösenord med specialtecken och siffror m.m. (vilket skulle ta hackarna tusentals år att köra ”brutal force” mot.)

Jo man ”saltar”.

Salta lösenorden

Man har en lång sträng (som är hemlig) som man lägger till på lösenordet innan man krypterar och hashar det.

Lägger man på ett salt som är 14 tecken långt så har man ju förlängt lösenordet med 14 tecken, vilket gör att en brutal force kommer att ta 154,640,721,434 årtusenden att knäcka. Ett 5 tecken långt lösenord tar enbart 11 sekunder att knäcka om det innehåller bara små bokstäver (Källa di.se).

Saltet man lägger på är långt och har alla typer av tecken i sig, specialtecken, stora, små, siffror osv.

Saltet lagrar man INTE i databasen utan t.ex. så har man det som ett configvärde i web-config eller liknande.

På så sätt måste hackern få tag i både databas och web.config för att kunna ens fundera på att brutal forcea lösenordstabellen.

I många fall så är saltet variabelt, t.ex. så kan man använda det inmatade lösenordet för att modifiera saltet så att saltet är olika på alla lösenord men ändå återskapbara för den som vet hur man modifierat saltet.

Återkommer inom kort med hur man kryptear connectionstrings (även detta är en känd säkerhetsbrist inom programmering mot databaser)

MCPDn  


Tags:
Categories: Säkerhet
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Be a microsoft professional

February 12, 2009 11:36 by Gunther Schmidt

Några tips för prov-förberedingar innför certiferingarna.

  • Läs boken som är Microsofts examensförberedelse.
  • Gör provfrågorna som följer med Boken på en CD.
  • kolla unde www.examcollection.com för nedladdningar av ytterliggare provfrågor.
  • Registrera Er med era windows Live id för en "second shot"
  • Börja inte plugga frågor för fullt tidigare än 3 dagar innan själva provet. Annars är de bara förvirrande i slutändan.
  • Lugna er och gå på spa kvällen innan och ta en öl! Om ni klarar av att inte vara nervös då har ni redan 50% rätt.

Gunther


Tags:
Categories: .Net | ASP | Press | Visual Studio
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Wizard-kontrollen i Asp.Net

October 28, 2008 09:23 by Gunther Schmidt

En av de mest sökta frågorna på nätet kring Asp.Net verkar handla om Wizard-kontrollen. Man vill avaktivera next-knappen innan all användarinformation är ifylld men det verkar helt omöjligt att göra utan att ta till krångliga omvägar.  

Ett sätt är att använda sig av Required Field Validator - kontrollen för alla fält som är obligatiriska. Next-knappen är aktiverad men tillåter inte hopp till nästa wizardsteg förrän alla fälten är ifyllda korrekt. Det sker alltså en post-back, man kan då ha ställt in RFV att rödmarkera fält som inte är korrekt ifyllda osv.


Om man vill förhindra att wizarden går till nästa steg manuellt eller göra en egen verifiering i kod så kan man i code-behind sidan lägga till detta i startnextbutton_click-eventet:


if wizardname.activestepindex = n
   e.cancel = true
  'verifera ....
     if verifering är ok then e.cancel = false
     end if
end if

 


Tags:
Categories: ASP | Programmering
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Fråga MCPDn!

October 6, 2008 11:26 by Gunther Schmidt

Eftersom Stefan ha varit på mig ett par gånger för att jag ska skriva om mina erfarenheter med Microsoft certifieringar, så ska jag lämna några uppgifter om det här.

Certs som jag kan prata om är:

  •  70-536 .net Application Development Foundation
  • 70-526 .net Windows Based Client Development Technology Specialist   
  • 70-528 .net Web based Client Development Technology Specialist
  • 70-547 .net Designing and Developing Web Based Applications Professional Developer
  • 70-548 .net Designing and Developing Windows Based Applications Professional Developer

70-536 är förutsättning till 70-526 och 70-528. 70-526 är förutsättning till 70-548 och 70-528 är förutsättning till 70-547.

I dagsläget finns det endast Microsoft Press böcker som förberedelse till provet. Dem är ganska oredigerade. Fellistan kan man ladda ner från Microsofts hemsida, kolla genom den innan du läser boken och kryssa bort alla fel i boken! Fellistan är långt ifrån fullständig, tyvärr. Boken 70-536 saknar även pedagogik och en del fel härstammar tydligen från Copy-Paste-fel. Den här tegelstenen gäller det att knäcka innan man kan gå vidare. Jag kan rekommendera att registrera sig för en 2nd shot innan man tar provet!

De andra böckerna är jämförelsevis enkla om man har jobbat med .Net fast pedagogik verkar fortfarande vara något väldigt omodernt. Lyckligtvis är alla böcker skrivna av flera författare så en del kapitel är ganska bra ändå!

Träningsfrågorna som följer med boken är ganska så dåliga. En del teman som tas upp i frågorna behandlar boken inte alls. Detsamma gäller för certifierings-provet. Man måste helt enkelt veta eller gissa rätt. En del frågor är ganska luriga, en annan del är väldigt intuitiva. En del frågor går såpass djupt att jag inte kan föreställa mig att någon klarar av dem utan att leta fram svaret på nätet....

Men ändå, jag klarade av alla på första försöket och det klarar ni säkert också om ni håller på med det där. Ni kan ju programmera!

Att förebereda sig inför certifieringen kommer att ge Er nya synvinklar i projekthantering och samtidigt skaffa en trygghet hos våra kunder och öka den egna kompetensen. Det är bara att börja!

Studiematerial: Jag avråder från att köpa böckerna, kanske man kan låna dem för en kortare period någonstans.  Om ni vill köpa dem, så rekommenderar jag att köpa en serie. Varje bok för sig själv är nästan lika dyrt som en serie av tre böcker som bygger på varandra. Om ni vill veta vart man kan hitta e-studiematerial så kontakta mig gärna.

Om ni behöver själsstöd innan provet eller har fler frågor, är det bara att e-posta eller besöka oss på kontoret i Orsa, med Sveriges vackraste kontorsutsikt!

 Smile Gunther.