Vi går bagom begrebet.
Sådan virker det
SQL-injektion er en teknik, hvor en bruger forsøger at sende SQL-kommandoer gennem en web-applikation til en database-server.
En web-applikation, som er sårbar overfor SQL-injektion, gør det muligt at sende forespørgsler og kommandoer til databaser gennem en hjemmeside.
Det manglende input validering kaldes for "SQL injektion".
Hvis en webapplikation er sårbar over for SQL-injektion, er det muligt for en vilkårlig bruger at sende et særligt udformet brugernavn eller passwordfelt, som vil ændre forespørgslen og potentielt give rettigheder, brugeren normalt ikke har.
I princippet kan SQL-injektion forekomme på alle hjemmesider med dynamisk indhold, hvor det er muligt at afsende data til en bagvedliggende server.
Typisk søges der efter loginformularer, søgefunktioner og lignende. Disse vil typisk transmittere data til en database via en post.
Der findes også meget materiale om SQL-injektion på nettet, hvorfor fremtiden klart vil vise en stigning i sabotage og skamfering af databaser som konsekvens af mangelfuld inputvalidering.
Hvornår kan min hjemmeside blive angrebet?
I princippet kan det selvfølgelig ske når som helst. Min erfaring er dog, at hyppigheden øges vildt i forbindelse med en begivenhed, som eksempelvis Muhammedkrise 1 og 2, hysteriet omkring de kinesiske OL-værter, Danmarks deltagelse i krigen i Irak og så videre.
Tilbage i december blev flere store danske medier ufrivilligt distributører af virus via inficerede reklamebannere på deres hjemmesider.
Den 27. maj 2008 startede et nyt angreb. Denne gang gik det ud over besøgende på TV2's hjemmeside.
Ved middagstid fik besøgende mulighed for at installere programmet "XP AntiVirus 2008".
Hvis brugerne klikkede "ja", blev programmet installeret. Efter installation viser programmet falske advarsler, som skal få brugeren til at betale for et unødvendigt og uvirksomt antivirusprogram.
Hvordan beskytter jeg min database?
Nødløsningen mod SQL-injektion er et escape input med eksempel:
mysql_real_escape_string eller tilsvarende for dit databasesystem, men der kan være fejl i funktionen, hvilket gør, at man alligevel kan slippe gennem, og det har der sågar også været i blandt andet MySQL.
Den mest effektive beskyttelse er at lave ordentlig inputvalidering på din hjemmeside.
Sørg for filtre på enkeltstående anførselstegn, som "'" eller andre tegn, som du ikke ønsker sendes ufiltreret videre til databasen. Dette umuliggør enhver SQL-injektion.
