Webbutveckling

Hur man bygger webbplatser med fokus på struktur, tillgänglighet och användbarhet (inte så mycket kod). Det var det bloggen handlade om från början.

Jag hade rätt igen: Statistik blir 2008 års stora grej

På fjolårets sista dag förutspådde jag att statistik skulle bli stort 2008. (Läs Så blir 2008.)

Lite smått imponerad över mig själv kan jag nu konstatera att analysen lutade åt rätt håll.

Nu har Dagens Nyheter nämligen skapat DN.factlab med data och statistik. Då jag själv föredrar en balanserad vetenskaplig rapport med testadata framför en närmast påhittad och vinklad Aftonbladetartikel är detta speciellt välkommet för mig.

Läs mer om hur det fungerar:

Roligt att själv hitta fakta på nätet
I dag lanserar Dagens Nyheter den nya webbtjänsten DN.factlab. Den erbjuder ett unikt och enkelt sätt att söka och jämföra fakta på internet.

Steg två i min profetia, som inte riktigt är uppfyllt, är att göra denna data läsbar för maskiner. Till exempel via xml så att det kan användas av andra applikationer. Som jag sa tidigare, möjligheterna är enorma.

Läs också Jag hade rätt: Wikinews fungerar inte.

Kollektiv intervju med Googles vd

På Fredik Wass bisonblog genomfördes en kollektiv intervju med Googles vd: Jaikububblan vs Google (Stina och Nicklas svarar på frågor).

Stina Honkamaa är Sverigechef och Nicklas Lundblad är europeisk policy manager på Google.

Det intressanta är hur intervjun genomfördes. Fredrik ställde frågor i sin Jaiku-kanal och bad läsarna att bidra med frågor till intervjun. Resultatet blev alltså en kollektivt genomförd intervju.

Så gör du en bra presentation av din webbplats

En ny webbdesign innebär ändlösa nätter framför Photoshop, eller hur? Då är du fel ute.

Webben är i första hand ett funktionellt medium och i andra hand estetiskt. Vill man titta på konst går man till ett museum.

Sydsvenskan ska göra om sin webbplats och begär bidrag från besökarna. Du kan se de redan inskickade tävlingsbidragen och lära dig mer om hur du själv skickar in ett tävlingsbidrag.

De flesta bidrag är skräp, men ett bidrag sticker ut. I stället för att koncentrera sig på vilken färg och form den nya kostymen ska uppbära, har Tomas Wennström och Kristin Heinonen lagt fokus på informationsarkitekturen och sidans uppbyggnad. Funktion före form alltså.

Tomas och Kristin visar hur de har tänkt:

Enkelt, pedagogiskt och inriktning mot att beskriva hur det ska fungera, snarare än hur det ska se ut. Så borde alla presentationer av innehållsrika webbplatser göras. Bildonani á la Photoshop är ingen behjälpt av, mer än att visa designkreatörens grava hybris.

(Källa: What’s Next)

Hitta böcker baserat på deras skrivstil, inte bara handling

Det här är nog det häftigaste jag sett på mycket länge. Mycket på grund av att jag är en bokmal.

Booklamp.org letar reda på böcker baserat på deras skrivstil, alltså hur de är skrivna i fråga om tempo, densitet, händelser, beskrivande text och mängden dialog.

Det finurliga är att du kan få rekommendationer på böcker som liknar den skrivstil du just har läst. I videon nedan tas Jurassic Park upp som exempel som börjar lugnt (lågt tempo, hög densitet och mycket beskrivande text) och sedan övergår i ett högre tempo (låg densitet, mycket händelser och kort beskrivande text).

När du sedan får fram en lista över rekommenderade böcker sorteras den efter betyg som hämtas från Amazon. En helt ny tjänst kryddad med Web 2.0 och mashups.

Jag tror att det här företaget kommer att bli uppköpt av Amazon eller Barnes & Noble inom en väldigt överskådlig framtid!

Jag har skrivit om språkundersökningar tidigare, bland annat Hur många ord per mening skriver du?, som bedömer språket i böcker genom hur långa meningarna är och hur svåra orden är. Men Booklamp tar det hela tjugo steg längre.

Lista över 100 sökmotorer och 2 162 sociala webbplatser

The Top 100 Alternative Search Engines, March. Glöm Google och ta en titt på 100 alternativa sökmotorer. Det finns speciella sökmotorer som bara söker efter ljud, video, bloggar etc.

Själv hittade jag Twing häromdagen som letar igenom diskussionsforum. Ett perfekt sätt att hitta forum om obskyra ämnen som just du gillar. Fast bara på engelska.

Downloadable List of 2,162 Social Bookmarking and Networking Sites. Vad säger man? En lista över 2 162 sociala webbplatser kräver sin man att sätta ihop. Dock är några dödförklarade.

Internet Explorer 8 beta ute nu!

I betan visas kommande funktioner upp såsom: Bättre stöd för standarder, ajax, rss, css och troligen också micro contents.

Internet Explorer 8 Beta 1 (Developer Preview)

Ett smart tips: I stället för att trixa med installationer i Windows så kan du skapa en virtuell kopia av Windows.

Ladda ned Virtual PC 2007. Det fungerar som vilket program som helst, men låter dig starta ett operativsystem snarare än ett program.

Jag brukar använda detta till att testa nya program och har lagt in Windows XP, Windows Vista och Ubuntu. Jag slipper då infektera mitt eget system med skräp som ligger kvar i registret eller på datorn efter en avinstallation. Dessutom är risken för virus minimal eftersom de kapslas in i den virtuella kopian. Det finns egentligen inga ursäkter att inte ha ett virtuellt operativsystem att utöva despotism i.

Har du en katastrofplan för din webbplats?

Hårddiskkrasch

Vad händer om för många besöker din webbplats på en gång? Det är ett lyxproblem att ha, men inte desto mindre ett problem.

Vi är många som hoppas, drömmer och aktivt jobbar med att driva relevant trafik till våra sidor. Men när man når den så kallade tipping point eller kritisk massa är det lätt hänt att det blir tvärtom. Din webbplats kraschar av överbelastning och går inte att nå. (Du kan ju också utsättas för en överbelastningsattack, DoS, eller ännu värre DDoS – en distribuerad överbelastningsattack som sker från flera olika platser.)

Driver du e-handel utan en fysisk butik är det naturligtvis en extra viktig fråga.

Jag planerar just nu för överbelastning. Inte för att jag lär drabbas av det inom en överskådlig framtid, utan för att vara på den säkra sidan. Att veta vad man ska göra när det väl händer. Då är det bara att agera och skrida till verket i stället för att paniskt reagera och hitta på någon ad hoc-lösning i all hast.

Just nu är min största webbplats, Voodoo Film, uppdelad i två delar; ett filmforum som drivs av vBulletin och en redaktionell del som drivs av ett egenutvecklat publiceringssystem. De ligger på var sin server. Valet av vBulletin (php) var enkelt eftersom jag länge surfat på sådana forum, vet möjligheterna och att det redan finns forum med tusentals användare online samtidigt. Mjukvaran klarar det.

Mitt egenutvecklade publiceringssystem (asp.net) använder cache i framför allt presentationslagret, vilket gör att det i princip bara är att hämta sidorna ur minnet, i värsta fall från en cache på hårddisken. Men beroende på sida genereras sidorna på nytt varannan dag eller var tionde minut från databasen. Det låter visserligen bra, men jag föredrar ändå att vara paranoid i förebyggande syfte. (Det är väl lite därför man tar backup?)

Det finns fortfarande inget som slår statiska html-sidor och det är lite dit jag tittar. Jag arbetar även aktivt för att försöka få ned filstorleken. Det sparar även bandbredd, vilket gör att sidorna laddas snabbare och att kostnaden blir mindre.

Så här ser min plan ut:

  • En version för alla. Jag försöker i största möjliga mån att undvika personaliserade sidor. Det var populärt ett tag, speciellt med portaler och liknande utdöda hybrider. Tanken är att man ska cacha det en gång och sedan visa det för miljoner av besökare.
  • Sprid på servrar. En idé är att lägga statiska filer såsom bilder på en egen server. En bild som laddas upp ligger oftast där i flera år, och behöver således inte belasta webbservern som visar statiska eller dynamiska sidor.
  • Gör sidorna små. Google är bra eftersom den är snabbladdad och sidorna är lätta. Du ska ju ändå bara söka där. Tänk på det och utforma dina sidor efter vad besökaren ska göra. Driver du en informativ resurs, som jag, är det omöjligt att undvika stora sidor med tanke på att det är själva innehållet. Men använd css för layout i stället för tabeller, ta bort onödig copyrighttext och förkorta filnamn om du kan.
  • Färre filer på sidan. Har du flera css-, javascript- och bildfiler? Slå ihop dem. Fler http-anrop till webbservern belastar mer i det långa loppet än att hämta en lite större fil en gång.

När webbservern en dag får se harmagedon i vitögat gör jag följande:

  1. Leta upp källan. Ta ett djupt andetag, dricker ett par munfullar vatten och försöker undersöka varifrån trafiken kommer. Om jag vet källan kan jag nog också lista ut vad besökaren är ute efter. (Länkas jag från en ockult sekt kan jag vara säker på att de tagit namnet Voodoo Film lite väl bokstavligt.)
  2. Lägg ut statiska sidor. Ta en kopia av webbsidorna högst upp i sajthierarkin (de länkar som finns i huvudmenyn). Lägg ut som statisk html-fil. Om det är riktigt allvarligt lägger jag bara ut det som besökarna kom dit för.
  3. Glöm inte ditt bästa innehåll. Jag gör också statiska html-filer av de filer som genom statistik visat sig vara de mest eftertraktade. Att hålla koll på de sidor med flest sidvisningar är därför nödvändigt. Innan det händer naturligtvis.

Vissa webbhotell har virtuella miljöer vilket innebär att din hemsida kan spridas lite varstans på ett kluster av hårddiskar. Det borde i teorin göra att två filer kan laddas samtidigt, och därmed snabbare, än om allt ligger på samma hårddisk. Jag är dock alldeles för dum att uttala mig om detta är en sanning. Men det låter logiskt i mina öron.

Har du planerat för en (välkommen) katastrof?

5 vanligaste lösenorden från Bilddagboken (och hur du skyddar dig)

Den senaste tiden har jag informerat mina besökare om vikten av välja ett säkert lösenord. Jag passade också på att analysera de lösenord som hackare lyckats knäcka från Bilddagboken.

De fem vanligaste lösenorden:

  1. 123456
  2. bajskorv
  3. hejsan
  4. fotboll
  5. hallon

Då urvalet var knappt, endast 1 111 knäckta lösenord, valde jag endast ta de fem mest frekventa. Förutom de svenska orden är det ingen större skillnad mot MySpace: 10 vanligaste lösenorden.

Hur ska ett säkert lösenord se ut?

Såhär: pD\o\"_M1-&$='x{j$ oy (21 tecken).

  • Långt. Ju längre ditt lösenord är, desto bättre. Det bör vara minst åtta tecken.
  • Specialtecken. Använd många olika tecken för ditt lösenord; bokstäver, siffror och specialtecken. Ett väldigt bra lösenord är i stil med {KA%\V1#w\^.s%.u>+~LB. Blanda alltid gemener med versaler.
  • Undvik ord. Använd inte ord som finns i ordlistor, de testas allra först. Hitta på något helt obegripligt. Med ordlista menas inte Svenska Akademins, utan hackerordlista. De fungerar som människor gör, så förkortningar i stil med ”H3ll0” för ”Hello” ger inget skydd.
  • Byt ofta. De som hackade Bilddagboken hittade en backupfil från maj 2007. De som ändrat lösenord sedan dess är betydligt bättre skyddade.
  • Ett per webbplats. Använd olika lösenord för varje webbplats du använder. När Aftonbladet hackades var det bara ett av systemen som drabbades. Men de lösenord som hittades användes för att komma in på andra tjänster.
  • Smart program. Det bästa är att använda ett program som håller reda på lösenorden åt dig. Jag rekommenderar Keepass. Det kan automatiskt klistra in användarnamn och lösenord i inloggningsformulär när du besöker en webbsida. Du behöver bara komma ihåg ett lösenord till programmet. Det är gratis, open source och fungerar på alla plattformar.
  • Skriv ned lösenorden. Risken för inbrott är mindre än dataintrång i dagsläget, så skriv ned lösenorden på papper om du inte vill använda Keepass. Spara däremot aldrig dina lösenord som en textfil på datorn.

Liksom Keepass kan Strong Password Generator ge dig ett automatisk lösenord som är starkt. Du får också smarta tips på hur du kommer ihåg det.

Så knäcks ett lösenord

Det är viktigt att förstå hur ett lösenord knäcks. Då kan du bättre skydda dig mot det. I regel finns det tre sätt:

  1. Gissa. Ju mer man känner till om en person, desto lättare är det att hitta rätt lösenord. Heter katten Fia? Då testar vi olika kombinationer av Fia. Undvik därför ditt andranamn, namnet på din sambo eller liknande som lösenord.
  2. Ordlista. En ordlista är som namnet säger en lista över ord. Men inte vanliga ord, utan ord som tagits fram från tidigare knäckta lösenord. Därför finns lösenord som 123456, abc123 och qwerty i ordlistan eftersom de är de absolut vanligaste lösenorden i världen.
  3. Brute force. Detta innebär att man testar alla tänkbara kombinationer av ett lösenord med ett datorprogram. Denna metod kommer alltid att lyckas knäcka ditt lösenord. Det är bara en fråga om tid. Ett riktigt långt lösenord med många specialtecken kan ta flera hundra miljoner år att knäcka. Ett lösenord på tre bokstäver tar ett par millisekunder.

Vanliga myter

ettjättejättejättelångtlösenord är lika säkert som 4|K#d)$�6".

Det beror på, i synnerhet eftersom bokstäverna a till z med största sannolikhet testas först. Hackare vet om att människor tänker så och ofta använder befintliga ord och kända mönster. Varför lägga energi på att knäcka lösenord med specialtecken när de flesta ändå bara använder ett fåtal bokstäver?

De enda specialtecknen i exemplet ovan är å, ä och ö. I den sistnämnda |, #, ), $ och �. Ett lösenord på 5 tecken med bokstäverna a till ö (gemener) ger ungefär 17,2 miljoner unika kombinationer. Min dator knäcker ungefär 10 miljoner lösenord/sekund. Det talar för sig själv.

Använder du i stället 5 tecken med både versaler och gemener plus specialtecken ökar du skyddet dramatiskt. Vid 8 tecken har du någorlunda acceptabel säkerhet. Jag rekommenderar dig att använda minst 14 tecken.

Ett knep (som också är enkelt att komma ihåg) är att ta olika ord från exempelvis en sångtext och kombinera det med specialtecken. Då kan det bli något i stil med !never like >gonna< virgin? från låten Never gonna give you up av Rick Astley och Like a Virgin av Madonna kombinerat med lite obegripliga tecken.

Byt bokstäver mot siffror, l till 1 och o till 0, så är du säker

Nej. Detta ”språk” kommer ursprungligen från hackare. Därför läggs kända ordkombinationer in i ordlistor, och crackprogrammen ställs in att arbeta efter detta mönster.

Man kan tycka att tr3vligt är lika svårt att knäcka som tgvtrl3i, men det förstnämnda vittnar om ett känt mönster.

Vad kan du som webbutvecklare göra?

När vi vet hur lösenord bör se ut, och hur de knäcks, är det dags för dig som webbutvecklare att ta steget.

Envägskryptera alltid. Du skall alltid envägskryptera användarens egna lösenord. Det finns inga undantag. Spara aldrig lösenord i klartext och skicka aldrig ut lösenord via e-post. Om en användare glömmer sitt lösenord måste du implementera en ”Glömt lösenordet?”-funktion som enkelt skapar ett nytt genom att besöka en bekräftelselänk i ett e-postmeddelande.

Envägskryptering innebär att man gör en form av kontrollsumma av lösenordet, så kallad hash. ”Hello World!” blir exempelvis 2ef7bde608ce5404e97d5f042f95f89f1c232871 som hash i krypteringsalgoritmen SHA-1. Det går inte att få tillbaka lösenordet. Man kan bara jämföra med en annan hash för att se om de är lika.

Salta lösenordet. Salt innebär att man lägger till diverse skräp till lösenordet. Om vi tar Hello World! igen och lägger till &3] får vi därmed Hello World!&3]. Varje användare får en egen salt. Detta gör att varje hash av lösenordet inte blir likadant som någon annan, trots att de har samma lösenord, och det blir därmed betydligt svårare att knäcka. När man vill knäcka ett lösenord, är det första man tittar efter nämligen antalet förekomster av en hash. Desto fler förekomster, ju troligare är det att ett vanligt lösenord har använts. Salt gör alla hashar unika.

Du kan ta användarens ID-nummer som salt. Det innebär att den som lyckats ta en kopia av databasen ändå får ruskigt svårt att knäcka lösenordet, även för den som använt 123456 som lösenord. Hackaren måste få tag i programkoden och själv leta upp var salten läggs till (före eller efter lösenordet?) och samtidigt veta vad som används till salt. Kryptera sedan det hela med en säker algoritm.

SHA-3, AES eller DES. Det är tre krypteringsalgoritmer som visat sig vara bland de mest svårknäckta i dagsläget. MD5 är väldigt vanligt men har bevisats ge så kallade kollisioner, det vill säga två olika textsträngar som ger samma hash.

Kryptera anslutningen. Det spelar ingen roll hur säkert ditt lösenord är om du ändå arbetar över en okrypterad anslutning (alltså inte SSL/HTTPS). Via ett inloggningsformulär skickas all data i klartext. Den som läser av HTTP-trafiken kan då hitta ditt lösenord. Om en krypterad anslutning inte är ett alternativ kan du alltid kryptera lösenordet på klientsidan, med javascript, innan det skickas till servern. Det kräver såklart att klienten har javascript aktiverat.

Bilddagboken dåligt säkrad

Bilddagboken använde den inbyggda hashfunktion som finns i relationsdatabasen MySQL. Den har varit oförändrad i många år och anses inte vara värd att förlita sig på.

Dessutom användes ingen salt, så det gick på ett enkelt sätt att ta fram den vanligaste hashen. Därefter kan man utgå från, genom statistik, att lösenordet är 123456.

Då är det bara en fråga kvar till dig. Tar du dina besökares säkerhet på allvar?

Tips

Testa olika lösenord och se hur svåra de är att knäcka med brute force: Password Haystacks: How Well Hidden is Your Needle? (tipstack till @botulf2000).