Välkommen till whr.se, recensioner av webbhotell. I denna avdelning publicerar vi guider och artiklar runt webbteknik, programmering och marknadsföring på Internet bland annat.

Olika hot mot hemsidor

För att globalt kunna göra förfrågningar och hämta data i en databas har en speciell språkstandard för databaser utvecklats, SQL. SQL står för Structured Query Language och är ett slags programmeringsspråk. Språket används exempelvis för att lagra och hämta användarnamn och lösenord för olika sidor på Internet.

På senare tid har det utvecklats flera sätt att lura databaserna i olika applikationer genom att lägga till sekvenser med SQL-kod, så kallat SQL injections, in i applikationen. SQL injection innebär helt enkelt att ett programmeringsspråk ”bakas in” i ett redan befintligt. De tillagda sekvenserna kan sedan, om de är skickligt skrivna, läsa data från databasen samt även ändra och modifiera vissa data. SQL-injektionen kan exekvera vissa sekvenser i koden i applikationens databas och i vissa fall till och med utföra exekveringar i operativsystemet.

SQL går ut på att ställa frågor (queries) till databasen och ange vissa ”krav” för att få fram rätt svar. Se exempel nedan.

Query: select * from users where username=’” & Anders & ”‘ and password=’ ” & Lösenord & ”‘

Här har Anders skrivit in sitt användarnamn Anders och lösenordet Lösenord för att logga in på sitt konto på Internet. Om en så kallad hacker vill kapa Anders konto, men inte vet lösenordet, byter hackaren ut det mot exempelvis ” or ‘1′1=’1′”. Då ser kodraden ut såhär isället:

Query: select * from users where username=’Anders’ and password = ” or ‘1′1=’1′

Hackaren kommer nu bli inloggad som Anders utan att behöva Anders lösenord, eftersom kravet ställt i query’n alltid kommer vara uppfyllt, det vill säga att 1=1 alltid är sant.

Vidare kan hackare använda SQL-injektioner för att få fram email-listor, listor på användarnamn med tillhörande lösenord etc.

Ett första steg att förhindra injektioner är att skanna query’n för exempelvis lösenord så att det endast kan finnas ett alternativ och endast ett visst antal tecken. Om lösenordet består av 10 tecken ska det vara exakt 10 tecken i query’n och inget annat. Man kan även använda sig av så kallade lagrade procedurer, vilket innebär att användarens konto inte får läsa eller skriva direkt mot databasens tabeller.

Ytterligare ett sätt att skydda sig är att använda parameteriserade frågor, vilket betyder att exempelvis användarnamn och lösenord sätts som separata parameter och inte frågas efter direkt i query’n. Kontroller och validering av både servern och klienten är andra sätt att hindra hackare att komma åt information.

Ett annat sätt för hackare att komma åt eller helt enkelt ändra en sidas funktion är så kallt Cross Site Scripting, XSS. Det innebär att hackern lägger till en egen bit kod som exekveras tillsammans med den ursprungliga programkoden.

Ofta sker detta genom olika formulär så som forum där användare kan posta olika inlägg som de själva kan ändra med HTML-kod. Hackern kan få meddelanden att ploppa upp på skärmen eller ändra utseende på hemsidan för andra användare genom att lägga in mycket stora bilder, frames eller annat som tar upp mycket plats.

Ett värre scenario, lite enkelt förklarat, är när hackern stjäl så kallade cookies för en användare som loggat in på sitt konto och lägger över dem på sin egen dator. På så sätt luras programmet att tro att det är originalanvändaren som är inloggad, men i själva verket har hackern kapat hela användarkontot.

Detta kan missbrukas till att plantera virus i en användares dator. Kontokaparen kan exempelvis skicka ett mail eller chat-meddelande till originalanvändarens kontakter med en ”smittad” länk. När mottagaren klickar på länken exekveras kod som infekterar användarens dator med ett virus.

Det är svårt att skydda sig mot XSS-hacking. Det du kan göra själv är att endast tillåta UTF-8 teckenkodning och se till att alla cookies för varje session är knutna till endast ett visst IP. Annars rekommenderas att man vänder sig till professionella säkerhetsexperter för hjälp.

Publicerad 2010-01-02. Kategori Övrigt.


Skriv en kommentar eller en fråga

This blog is kept spam free by WP-SpamFree.