En SQL-injeksjon er et ondsinnet angrep på en database , der en angriper setter inn , eller injiserer , en SQL spørring - en formell forespørsel til databasen - inn i en streng som til slutt henrettet av databasen? , via de data som han går inn i et datamaskin -program. Hvis de lykkes, kan en SQL-injeksjon trekke ut sensitive data fra databasen , sette inn, oppdatere eller slette data , eller til og med slå av database management system . Dynamisk SQL
SQL-injeksjon utnytter et programmeringsspråk teknikk kjent som "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 en ny kommando , avsluttet med en kommentar mark , for eksempel " - ", slik at en eventuell ny tekst blir ignorert ved kjøring . I en litt mer sofistikert form for 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 den ondsinnede koden henrettet
< . br >
Effects
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 data integritet og problemer knyttet til godkjenning eller autorisasjon , av database brukere . Hvis autorisasjon informasjon blir holdt i selve databasen , kan en SQL-injeksjon trekke ut informasjon , eller endre den , slik at uautoriserte brukere kan koble seg til databasen .
Berørte Platforms
SQL-injeksjon gjelder åpenbart SQL, den vanligste database spørrespråk , men alle plattformer som krever interaksjon med en SQL -database kan bli påvirket. SQL-injeksjon sårbarheter er lett å oppdage og lett å utnytte, noe som har ført til at SQL-injeksjon har blitt et vanlig problem med database programvarepakker og database - drevne nettsteder.
Validation
< p> Hvis et angrep injiserer ondsinnet SQL kode som kjører uten feil , er det ingen måte å oppdage SQL-injeksjon fra en datamaskin program . Database programmerere må derfor gjennomgå alle programkode som konstruerer dynamiske SQL-setninger og validere alle brukerundersøkelser, uten å gjøre noen antagelser om størrelse, innhold eller type av data . En angriper kan bevisst bygge inn en " DROP TABLE " statement , eller noen andre , like skadelig uttalelse i et tekstfelt , så programmerere må sørge for at programmene oppføre seg riktig i slike tilfeller.