Hva er en SQL Injection?

Hva er en SQL Injection?


En SQL-injeksjon er et ondsinnet angrep på en database, der en angriper inserts, eller injiserer, en SQL-spørring - en formell forespørsel til databasen - til en streng som til slutt henrettet av databasen, via data at han går inn i et dataprogram. Hvis de lykkes, kan en SQL-injeksjon trekke sensitive data fra databasen, sette inn, oppdatere eller slette data eller slå av database management system.

dynamisk SQL

SQL-injeksjon utnytter et programmeringsteknikk som kalles "dynamisk SQL." Den fullstendige teksten i en dynamisk SQL-setning, eller kommando, er ukjent når et program er kompilert, men er konstruert, dynamisk, fra data input av brukeren når programmet utføres. En angriper avslutter konstruert kommandoen tidlig, og føyer til en ny kommando, avsluttet med en kommentar mark, slik som "-", slik at en eventuell ny tekst blir ignorert under kjøring. I en litt mer sofistikert form av SQL-injeksjon, injiserer en angriper ondsinnet kode i dataene som er lagret i databasen; når de lagrede dataene hentes og brukes til å konstruere en dynamisk SQL-setning, er det skadelig kode kjøres.

effekter

Nøyaktig hva angripere kan oppnå ved SQL-injeksjon, avhenger av deres fantasi og dyktighet, men typiske konsekvenser av en SQL-injeksjon er tap av konfidensielt, tap av dataintegritet og problemer knyttet til autentisering, eller autorisasjon, av database brukere. Hvis autorisasjon informasjon blir holdt i selve databasen, kan en SQL-injeksjon trekke ut informasjon, eller endre det, slik at uautoriserte brukere kan koble til databasen.

berørte plattformer

SQL-injeksjon åpenbart gjelder SQL, den vanligste databasespørrespråk, men alle plattformer som krever interaksjon med en SQL-database kan bli påvirket. SQL-injeksjon sikkerhetsproblemene er lett å oppdage og lett å utnytte, noe som har ført til at SQL-injeksjon har blitt et vanlig problem med database programvarepakker og databasedrevne nettsteder.

Validering

Hvis et angrep injiserer ondsinnet SQL-koden som utføres uten feil, er det ingen måte å oppdage SQL-injeksjon fra i et dataprogram. Database programmerere må derfor gjennomgå all programkode som konstruerer dynamiske SQL-setninger og validere alle brukerundersøkelser, uten å gjøre noen forutsetninger om størrelse, innhold eller type data. En angriper kan bevisst legge inn en "DROP TABLE" statement, eller noen andre, like skadelig uttalelse i et tekstfelt, så programmerere må sørge for at programmer oppføre seg riktig i slike tilfeller.