En SQL-injektion er et ondsindet angreb på en database, hvor en hacker skær, eller indskyder , en SQL query - en formel anmodning til databasen - i en streng, der til sidst henrettet af databasen? via de data, han træder ind i et computerprogram. Hvis det lykkes, kan en SQL injection udtrække følsomme data fra databasen , indsætte, opdatere eller slette data eller endda lukke database management system . Dynamisk SQL
SQL-injektion udnytter et programmeringssprog teknik kendt som "dynamisk SQL. " Den fulde ordlyd af en dynamisk SQL-sætning , eller kommando , er ukendt , når et program er kompileret , men er konstrueret , dynamisk , fra datainput af brugeren, når programmet udføres . En angriber afslutter den beregnede kommandoen tidligt og tilføjer en ny kommando , afsluttet med en kommentar mark , som "-" , således at enhver efterfølgende tekst ignoreres på gennemførelsestid. I en lidt mere sofistikeret form for SQL-injektion , sprøjter en angriber skadelig kode i de data, der er gemt i databasen , når de lagrede data er hentet , og bruges til at konstruere en dynamisk SQL-sætning , er den skadelige kode henrettet
< . br >
Effects
Præcis hvad angriberne kan opnå ved SQL-injektion , afhænger af deres fantasi og dygtighed, men typiske konsekvenser af en SQL- injektion er tab af fortrolighed , tab af data integritet og problemer relateret til autentificering , eller tilladelse af database-brugere. Hvis tilladelsen oplysninger opbevares i databasen selv, kan en SQL injection udtrække information, eller ændre den, så uautoriserede brugere kan oprette forbindelse til databasen.
Berørte Platforms
< br >
SQL-injektion gælder selvfølgelig SQL , den mest almindelige database query sprog, men enhver platform , der kræver interaktion med en SQL-database kan blive påvirket. SQL injektion sårbarheder er nemme at opdage og nemme at udnytte , hvilket har betydet, at SQL-injektion er blevet et fælles problem med database softwarepakker og database-drevne websites .
Validation
< p > Hvis et angreb sprøjter skadelig SQL-kode , der udfører uden fejl , er der ingen måde at detektere SQL injektion fra inden for et computerprogram . Database programmører skal derfor gennemgå alle programkode , der konstruerer dynamiske SQL-sætninger og validere alle bruger-input, uden at gøre nogen antagelser om størrelsen , indhold eller type af data. En angriber kan bevidst integrere et " DROP TABLE " erklæring , eller en anden , lige så ondsindet erklæring i et tekstfelt , så programmører skal sikre, at programmerne opføre sig hensigtsmæssigt i sådanne tilfælde.
< Br >