At blive hacket eller ikke at blive hacket: det er spørgsmålet
april 3rd, 2013
Det bliver mere og mere vigtigt for virksomheder at have en ”app” til at lave reklame for sig selv. Men det er dog stadigvæk en hjemmeside, hvor man finder de fleste relevante oplysninger om en virksomhed. Sæt nu at du vil vide, hvornår McDonald’s har åbent, eller hvor den nærmeste Lidl ligger – så går man først og fremmest ind på mcdonalds.dk eller lidl.dk (altså: man går nok ikke ind i lidl.dk for at finde ud af hornår McDonald’s har åbent).
Der findes et hav af virksomheder der kan lave hjemmesider. Hvis du går ind i Google og skriver ”Få lavet en hjemmeside”, bliver der med det samme foreslået ”Få lavet en hjemmeside billigt”. Der er ikke noget galt i at spare penge, men jo færre penge man er villig til at bruge, desto mindre får man. Lyder ret indlysende, men jeg vil gerne kaste et lys på det.
En hjemmeside kan være meget statisk: en enkel side med et billede, lidt tekst (f.eks. kontaktoplysninger) og ikke mere end det. Det tager en grafiker ca. tre minutter til at fabrikere.
Lidt mere avanceret er, hvis man får lavet en hjemmeside med flere undersider: en om historien bag firmaet, en om åbningstider, en om prisinformation, en kontaktside hvor man kan klikke på en e-mailadresse og en rutebeskrivelse. Det er stadigvæk meget statisk: der er ingen dippedutter på: hjemmesiden ændres under ingen omstændighed fordi man som bruger skriver eller klikker på noget.
Lidt mere avanceret bliver det, hvis du gerne vil skjule din e-mailadresse – for at undgå at folk opsnapper din mailadresse, og bombarderer dig med en masse mails. Mange får derfor lavet en kontaktformular: nogle felter, hvor folk kan skrive deres e-mailadresse, deres navn, et kontaktemne og en fri tekst. Hermed bliver hjemmesiden lidt mere dynamisk.
Jo mere dynamisk en hjemmeside er, desto mere kan en hjemmeside misbruges. Det kan sammenlignes med et visitkort: hvis jeg taber et visitkort, hvor der står mit navn, telefonnummer og e-mailadresse på, så sker der ingenting ved det, hvis kortet bliver fundet af nogen. Faktisk ville jeg blive glad for det, vedkommende må gerne beholde kortet. Men taber jeg nu mit NemID-kort, samt en seddel hvor jeg har skrevet mit brugernavn og password på, så har jeg et problem. Altså ikke hvis den kommer i hænder på et ærligt menneske – men det kan man desværre ikke regne med. Hvis mine oplysninger kommer i besiddelse af en, der ved hvad man kan med systemerne, som benytter NemID, kan det have alvorlige konsekvenser for mig. Med hjemmesider er det ikke anderledes.
Hvis man ved hvordan hjemmesider er bygget op, og man kender til teknikkerne, og man støder på en ubeskyttet hjemmeside, så kan man ødelægge den fuldstændig.
Forestil dig en hjemmeside, hvor der ligger mange forskellige søgbare tekster på – en nyhedsside, en webshop eller dette website: en blog. Når du indgiver et ord du vil lede efter (f.eks. Windows), så sender hjemmesiden en forespørgsel til databasen. Alle artikler er gemt i databasen, og hjemmesiden sender bare en kommando til databasen, som så returnerer et svar.
Lad os tage et eksempel:
Databasen hedder ”bloggen”. I databasen har vi en tabel, som hedder ”artikler”, og i denne tabel er der en kolonne som hedder ”indhold”. ALLE artiklers indhold er gemt i rækker i tabellen ”artikler” i kolonnen ”indhold”, hver artikel på en egen række. Så hvis der er 5 artikler, er der også 5 rækker. Alle artikler har også en titel, og derfor er der også en kolonne som hedder ”titel”. Alle artikler har også et unikt nummer, som vi kalder ”ID”, som forkortelse af ”identifikation”.
Hvis jeg nu vil finde alle artikler, der indeholder ordet ”Windows”, skal jeg sende en forespørgsel til databasen. En sådan forespørgsel ser typisk sådan ud:
SELECT ID FROM `bloggen`.`artikler` WHERE `indhold` LIKE ‘%Windows%’;
Så svarer databasen eksempelvis:
” rækkerne, med ID’erne 2, 4 og 5 svarer positivt på din forespørgsel.”
Simpelthen fordi databasen opfatter det som:
Giv en samling af ID’er fra tabellen ’artikler’ i databasen ’bloggen’, hvor ’indhold’ ligner ”et eller andet”+windows+”et eller andet”.
Men sæt nu, at jeg ikke leder efter ”Windows” men efter følgende
%’ OR ID LIKE ‘%
I så fald sender hjemmesiden, hvis den er ubeskyttet, følgende kommando til databasen:
SELECT ID FROM `bloggen`.`artikler` WHERE `indhold` LIKE ‘%%’ OR ID LIKE ‘%%’;
Og det vil databasen opfatte som:
Giv en samling af ID’er fra tabellen ’artikler’ i databasen ’bloggen’, hvor et af følgende kriterier passer
-’indhold’ indeholder hvad som helst
ELLER
’ID’ indeholder hvad som helst
Databasen vil nu returnere ALLE artikler.
Dette eksempel er harmløst. Det vil gøre det samme som at lede efter ”ingenting”, som på nogle hjemmesider er muligt.
Men sæt nu, at det ikke er søgefeltet jeg benytter, men derimod en formular til at logge på et system… Eller en formular til at få tilsendt et nyt password… Så kan jeg sende en forespørgsel til databasen, som ændrer emailadressen af brugeren til min egen emailadresse, som har ID 1 (som regel er det personen, der har sat hjemmesiden op!), få tilsendt et nyt password til brugeren, der har min e-mailadresse, og på den måde kan jeg logge på hjemmesiden.
Jeg vil ikke udpensle hvordan man gør, da jeg ikke vil opfordre nogen til at hacke sig ind i databaser.
Men der er rigtig mange virksomheder, der har hjemmesider, som ikke er beskyttet mod disse angreb.
Denne teknik kaldes SQL Injection. SQL er navnet på den metode, man udformer kommandoer, som man sender til databasen, og injection betyder indsprøjtning. Så man sprøjter falske SQL-kommandoer ind via webformularer eller andre steder hvor man kan sende dynamisk data til en hjemmeside.
Det er uhyre vigtigt, at man beskytter sin hjemmeside ordentligt.
Der findes ikke en universel metode til at finde ud af om din hjemmeside er beskyttet. Men du kan starte med at indtaste følgende linje i søgefeltet på din hjemmeside:
1′ or ’1′ = ’1′))/*
Hvis hjemmesiden svarer på samme måde som hvis du havde skrevet TESTTESTTESTTESTTEST (altså noget i retningen af: ”Ingen resultater fundet”), så ved du at udvikleren af din hjemmeside har taget højde for beskyttelse mod SQL Injection. Et endegyldigt svar om din hjemmeside er sikret mod SQL Injection, kan kun gives ved indgående undersøgelse og en masse tests.
Er SQL Injection så det eneste man skal passe på for? Desværre nej. Der findes et hav af muligheder til at hacke en hjemmeside. SQL Injection er bare én af dem, lige som Cross Site Scripting og Code Injection.
Så hvis du får lavet en hjemmeside, og den kan lidt mere end at være en digital pjece eller visitkort: pas for alt i verden op med billige virksomheder: beskyttelse mod hackere bør tages meget seriøst. Du kan altid kontakte os for en uforpligtende snak om dette emne.








