Stockholm Waterfront 25-26 november 2019

Fall inte på enkla grepp – undvik SQL injections

När du drar igång en webbtjänst som erbjuder användarna möjlighet att mata in information om sig själva som du lagrar i en databas i syfte att matcha ihop dem med andra användare, med produkter, med lediga arbeten eller vad det nu må vara så tar du ett stort ansvar för att se till att den informationen överförs med optimalt integritetsskydd och att risken för att informationen röjs eller förändras minimeras.

I ett exempel från det stora landet i väster, ride-match.com, har ett programmeringsfel på sajten (som hjälper folk som åker bil till jobbet att samåka) bidragit till att exponera känslig information om anställda från hundratals arbetsgivare i södra Kalifornien, inklusive minst ett militärförband.

All information är åtkomlig om man känner till hur man utnyttjar svagheten

Tjänsten är ett samarbete utvecklat av transportansvariga inom fem regionala myndigheter i södra Kalifornien. Varje person måste ange kontors- och hemadress och när de lämnar respektive för att tjänsten ska para ihop dem med andra som bor och arbetar på plats och tid som passar samåkning. I princip all information är åtkomlig för alla som känner till hur man utnyttjar svagheten.

Buggen som upptäcktes förra månaden tillåter hackare att komma åt mängder av personinformation som namn, hemadresser, telefonnummer, när de reser till respektive från jobbet och i vissa fall anställningsnummer. Sårbarheten – en simpel SQL-injection – var fortfarande aktiv när det uppmärksammades i pressen, mer än två veckor efter att det hade rapporterats till ansvariga utvecklare för sajten. Nu bör det vara löst. SQL-injections innebär att din MySQL-databas manipuleras genom att indata i MySQL-frågan förändras.

Hackare kan utnyttja det här för att prata direkt och ge kommandon till databasen

Just den här bristen är resultatet av att webbapplikationer inte lyckas att på ett adekvat sätt validera data som matas in i sökrutor och andra fält på webbplatser. Hackare kan utnyttja detta för att prata direkt med och ge kommandon till databasen. SQL injection är ett mycket vanligt säkerhetsproblem som det är värt att tjata om. Ofta används det för att hämta information, exempelvis e-postadresser, som kan säljas vidare eller användas direkt för att skicka ut spam. Väl upptäckt kan det oftast fixas på ett par minuter, genom att ändra en eller ett par rader kod.

Indatakontroller och indatavalidering viktigaste skyddet

Det finns flera olika metoder för att skydda sig mot SQL-injection och ofta vill man jobba med flera skydd. Det allra viktigaste skyddet är indatakontroller och indatavalidering.

Se till att variablerna endast innehåller den information som förväntas. Om max antal tecken för en sökning av användarnamn är 30, så skall den som söker inte kunna skicka in fler tecken. Validera även rätt datatyp. Om formuläret frågar efter siffror, t.ex. där en användare ska ange sin ålder, då ska det bara acceptera siffror och ingenting annat.

Missa inte! Anne-Marie Eklund Löwinder moderator för diskussionerna ”Allt du gör kan användas emot dig” och ”An Internet health check”, 4 nov klockan 15.30 på Internetdagarna 2009, Anmäl dig här Gå till programmet.